首页 > 其他分享 >List集合

List集合

时间:2023-07-31 09:46:28浏览次数:20  
标签:遍历 迭代 List 元素 list add 集合

List

list集合在java.util下使用时需要导包

List集合特点:

  • 有序:存和取的元素顺序一致
  • 有索引:可以通过索引操作元素
  • 可重复: 存储的元素可以重复
    == List特有== 方法 :list是Collection中的一种,List继承了Collection中的方法,但是List集合有索引,所以多了很多关于索引操作的方法。
方法名称 说明 备注
void add(int index,E,element) 在此集合的指定位置插入指定的元素 int index是指定位置。(增)
E remove(int index) 删除指定索引处的元素,返回被删除的元素 (删)
E set(int index,E element) 修改指定索引处的元素,返回被修改的元素 (改)
E get(int index) 返回指定索引处的元素 (查)

使用步骤

  1. 创建一个集合
List<String> list = new ArrayList<>();

注:List实际上也是一个接口,不能直接创建接口的对象,所以需要创建实现类的对象。

  1. 添加元素
        list.add("1");
        list.add("2");
        list.add("3");
  1. 打印集合:
        System.out.println(list);

运行结果:
在这里插入图片描述

  1. 在指定位置添加元素
        list.add(1,"4");//在1位置添加元素4

运行结果:
在这里插入图片描述
5. 删除指定索引处的元素
注:remove有两个方法,第一个是根据对象删,方法会返回当前的对象是否删除成功。还有已一个重载的方法,是根据索引删除,把被删除的元素做一个返回。在这里插入图片描述
条件:删除数组中的元素,并打印删除的元素。

        String remove = list.remove(0);
        System.out.println(remove);
        System.out.println(list);

运行结果:
在这里插入图片描述
小细节:
list删除有两种方式,一种是直接删除元素,另一种是索引删除,如果创建的是int类型集合,删除的时候,要注意选用的方法,比如:
6. 首先创建一个int类型的集合,集合中的元素分别为1、2、3
在这里插入图片描述
7. 问题:此时删除的是索引位置1;还是删除的1元素?

在这里插入图片描述
答:此时用的方法是remove(int index);根据上表可知,int index是表示索引位置,所以该方法删除的是索引为1的位置,删除的元素是2;

运行结果:
在这里插入图片描述
原因:因为在调用方法的时候,如果方法出现了重载的现象,优先调用实参和形参类型完全一致的那个方法。

如果直接删除元素1,需要手动装箱,手动把基本数据类型1变成Integer类型
代码如下:
在这里插入图片描述
运行结果:

在这里插入图片描述

修改方法:
将1位置的元素修改为4

        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        int result = list.set(1,4);//注意元素类型
        System.out.println(result);
        System.out.println(list);

获取方法:
获取第2个元素的信息

        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        System.out.println(list);
        int i = list.get(2);
        System.out.println(i);

list集合遍历的方式

  • 迭代器遍历
  • 列表迭代器遍历
  • 增强for循环
  • lambda表达式遍历
  • 普通for循环遍历

迭代器遍历

  1. 创建一个集合并添加元素
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
  1. 迭代器
    获取一个迭代器对象,这个迭代器对象在底层就好比一个指针或者是一个箭头,默认指向集合的0索引处
 Iterator<String> iterator = list.iterator();//获取一个迭代器对象,这个迭代器对象在底层就好比一个指针或者是一个箭头,默认指向集合的0索引处

循环遍历,利用while,调用hasNext方法

while(iterator.hasNext()){   //用来判断当前指向的位置是否有元素,如果有则是true,否则是false。
}

使用.next方法。 移动指针获取当前的元素

 iterator.next();//移动指针获取当前的元素

完整代码如下:

        //创建list集合对象,并添加元素
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

        Iterator<String> iterator = list.iterator();//获取一个迭代器对象,这个迭代器对象在底层就好比一个指针或者是一个箭头,默认指向集合的0索引处
        while (iterator.hasNext()){
            String string = iterator.next();//移动指针获取当前的元素
            System.out.println(string);
        }

运行结果如图
在这里插入图片描述
增强for循环遍历

 //创建list集合对象,并添加元素
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
 //下面的变量s,其实就是一个第三方的变量
        // 再循环的过程中,一次表示集合中的每一个元素
        for (String s : list) {
            System.out.println(s);
        }

运行结果
在这里插入图片描述

lambda表达式遍历
list调用一个forEach方法,在小括号里面先写匿名内部类的方式
forEach方法的底层其实就是一个循环遍历依次得到循环遍历中的每一个元素
并把每一个元素传递给下面的accept方法
accept方法的形参s,就一依次表示集合中的每一个元素

初始样子:

 list.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                
            }
        });

然后把new consumer和方法名删掉(注意删掉括号)

 list.forEach((String s) {

            }
        );

在形参和方法体中间需要加上lambda的固定格式->


        list.forEach((String s)->{
            System.out.println(s);
            }
        );

该代码可以简化,数据类型可以省略,如果参数只有一个,小括号可以省略,如果方法体只有一行,大括号和return可以省略,分号也可以省略.。

list.forEach(s->System.out.println(s));

完整代码:

 //创建list集合对象,并添加元素
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        
        list.forEach(s->System.out.println(s));

运行结果:
在这里插入图片描述
普通for循环遍历

    //创建list集合对象,并添加元素
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

    for (int i = 0; i < list.size(); i++) {
            String  s = list.get(i);
            System.out.println(s);
        }

列表迭代器
next方法:是从前往后移动迭代器里面的指针
previo方法:是从后往前移动迭代器里面的指针

        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

ListIterator<String> str = list.listIterator();
        while (str.hasNext()){
            String s = str.next();
            //如果想在list 集合中添加元素,不能使用集合的方法
            //即不能使用list.add();会报并发修改异常
            //可以用迭代器自身的方法去操作
            if ("bbb".equals(s)){
                str.add("sss");
            }

        }
        System.out.println(list);

小结:
迭代器遍历:
如果在遍历的过程中删除元素,使用迭代器

列表迭代器
在遍历的过程中需要添加元素,使用列表迭代器

增强for循环和Lambda表达式
仅仅想要遍历,那么使用增强for循环或者Lambda表达式

普通for循环
如果遍历的时候向操作索引,那么可以使用普通for循环

标签:遍历,迭代,List,元素,list,add,集合
From: https://www.cnblogs.com/wangkang3027447800/p/17592640.html

相关文章

  • Java集合之一——HashMap(辨析)
    看到一篇讲hashmap的文章,讲的很不错,但是有一点我觉得作者没有讲清楚,这里我说一下自己的理解。原文,先看原文:https://blog.csdn.net/woshimaxiao1/article/details/83661464前文概述,该博客的主要内容如下:1.什么是哈希表(主干为数组)、什么是哈希冲突、如何解决哈希冲突。这些大都......
  • 集合ArrayList
    一、在集合元素均为数字的情况的使用remove1importjava.util.ArrayList;23publicclasslianxi{4publicstaticvoidmain(String[]args){5ArrayList<Integer>list=newArrayList<>();6list.add(1);7list.add(2);8......
  • College Students'Booklist
    CollegeStudents'BooklistAsisclearlyreflectedinthetableabove,thepercentageofthecollegestudents'booklist,from1992to2012.wecanseethereisabigchangeofcollegestudent'schoiceofbooksfrom1992to2012.Obviously,books......
  • Java中过滤出ListA和ListB中字段相同的集合
    Java中过滤出ListA和ListB中age字段相同的User集合在Java中,List是一种常见的集合类型,它可以用来存储一组有序的数据。而对于List中存储的对象类型,我们可以使用泛型来进行限定。假设我们现在有两个List集合,分别为ListA和ListB,它们都存储了一些User对象。现在我们需要从这两个集合......
  • 第九节 集合&学生管理系统
    题目1现有如下字符串元素:["aaa","bbb","aaa","aaa","ccc","bbb"],请将所有的元素按顺序存入ArrayList集合中,并遍历集合查看存储结果。训练目标ArrayList集合存储字符串元素,并遍历。训练提示1、创建ArrayList集合,泛型如何定义?2、怎样将数据添加到集合中?3、怎样遍历集合?......
  • 【Python】使用 pyecharts 模块绘制动态时间线柱状图 ① ( 列表排序 | 使用 sorted 函
    文章目录一、列表排序1、使用sorted函数对容器进行排序2、使用list.sort函数对列表进行排序3、使用list.sort函数对列表进行排序-设置排序函数4、使用list.sort函数对列表进行排序-设置lambda匿名排序函数pyecharts画廊网站:https://gallery.pyecharts.org/#/......
  • 集合(3)
    HashSet类HashSet实现了Set接口HashSet本质上是HashMappublicHashSet(){map=newHashMap<>();}存储的元素不重复、无序其取决于hash确定索引的结果底层说明HashSet底层是HashMap,HashMap底层是(数组+链表+红黑树)示例:说明:1)先获取传入元素的哈希值(hashCode方法)2)对哈......
  • SAP UI5 OData 请求 url 中的参数 sap-value-list=none
    SAPUI5是一个基于JavaScript的用户界面技术,用于构建企业级web应用程序。OData(OpenDataProtocol)是一个开放标准,允许消费者查询和操作数据。在SAPUI5应用中,OData服务用于处理数据交换。当SAPUI5应用加载时,应用会自动发起一个OData元数据请求,这是因为应用需要从服务端获取元数......
  • Java之不可变集合
    Java之不可变集合什么是不可变集合?不可变集合就是不可被修改的集合。集合的数据项在创建的时候提供,并且在整个生命周期中都不可被改变。否则报错为什么要创建不可变集合?如果当某个数据不能被修改,把它防御性地拷贝到不可变集合中是个很好的选择。或者当集合对象被......
  • 第十三节 ArrayList&学生管理系统
    1.ArrayList集合和数组的优势对比:长度可变添加数据的时候不需要考虑索引,默认将数据添加到末尾1.1ArrayList类概述什么是集合​ 提供一种存储空间可变的存储模型,存储的数据容量可以发生改变ArrayList集合的特点​ 长度可以变化,只能存储引用数据类型。泛型的使用......