• Java之list集合的详细解析


    2.List集合

    2.1List集合的概述和特点【记忆】

    • List集合的概述

      • 有序集合,这里的有序指的是存取顺序

      • 用户可以精确控制列表中每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素

      • 与Set集合不同,列表通常允许重复的元素

    • List集合的特点

      • 存取有序

      • 可以重复

      • 有索引

    2.2List集合的特有方法【应用】

    • 方法介绍

      方法名描述
      void add(int index,E element)在此集合中的指定位置插入指定的元素
      E remove(int index)删除指定索引处的元素,返回被删除的元素
      E set(int index,E element)修改指定索引处的元素,返回被修改的元素
      E get(int index)返回指定索引处的元素
    • 示例代码

      1. public class MyListDemo {
      2.    public static void main(String[] args) {
      3.        List list = new ArrayList<>();
      4.        list.add("aaa");
      5.        list.add("bbb");
      6.        list.add("ccc");
      7.        //method1(list);
      8.        //method2(list);
      9.        //method3(list);
      10.        //method4(list);
      11.   }
      12.    private static void method4(List list) {
      13.        //       E get(int index) 返回指定索引处的元素
      14.        String s = list.get(0);
      15.        System.out.println(s);
      16.   }
      17.    private static void method3(List list) {
      18.        //       E set(int index,E element) 修改指定索引处的元素,返回被修改的元素
      19.        //被替换的那个元素,在集合中就不存在了.
      20.        String result = list.set(0, "qqq");
      21.        System.out.println(result);
      22.        System.out.println(list);
      23.   }
      24.    private static void method2(List list) {
      25.        //       E remove(int index) 删除指定索引处的元素,返回被删除的元素
      26.        //在List集合中有两个删除的方法
      27.        //第一个 删除指定的元素,返回值表示当前元素是否删除成功
      28.        //第二个 删除指定索引的元素,返回值表示实际删除的元素
      29.        String s = list.remove(0);
      30.        System.out.println(s);
      31.        System.out.println(list);
      32.   }
      33.    private static void method1(List list) {
      34.        //       void add(int index,E element) 在此集合中的指定位置插入指定的元素
      35.        //原来位置上的元素往后挪一个索引.
      36.        list.add(0,"qqq");
      37.        System.out.println(list);
      38.   }
      39. }

    2.3List集合的五种遍历方式【应用】

    1. 迭代器

    2. 列表迭代器

    3. 增强for

    4. Lambda表达式

    5. 普通for循环

    代码示例:

    1. //创建集合并添加元素
    2. List list = new ArrayList<>();
    3. list.add("aaa");
    4. list.add("bbb");
    5. list.add("ccc");
    6. //1.迭代器
    7. /*Iterator it = list.iterator();
    8.     while(it.hasNext()){
    9.        String str = it.next();
    10.        System.out.println(str);
    11. }*/
    12. //2.增强for
    13. //下面的变量s,其实就是一个第三方的变量而已。
    14. //在循环的过程中,依次表示集合中的每一个元素
    15. /* for (String s : list) {
    16.       System.out.println(s);
    17.   }*/
    18. //3.Lambda表达式
    19. //forEach方法的底层其实就是一个循环遍历,依次得到集合中的每一个元素
    20. //并把每一个元素传递给下面的accept方法
    21. //accept方法的形参s,依次表示集合中的每一个元素
    22. //list.forEach(s->System.out.println(s) );
    23. //4.普通for循环
    24. //size方法跟get方法还有循环结合的方式,利用索引获取到集合中的每一个元素
    25. /*for (int i = 0; i < list.size(); i++) {
    26.            //i:依次表示集合中的每一个索引
    27.            String s = list.get(i);
    28.            System.out.println(s);
    29.        }*/
    30. // 5.列表迭代器
    31. //获取一个列表迭代器的对象,里面的指针默认也是指向0索引的
    32. //额外添加了一个方法:在遍历的过程中,可以添加元素
    33. ListIterator it = list.listIterator();
    34. while(it.hasNext()){
    35.    String str = it.next();
    36.    if("bbb".equals(str)){
    37.        //qqq
    38.        it.add("qqq");
    39.   }
    40. }
    41. System.out.println(list);

    2.4 细节点注意:

    List系列集合中的两个删除的方法

    1.直接删除元素
    2.通过索引进行删除

    代码示例:

    1. //List系列集合中的两个删除的方法
    2. //1.直接删除元素
    3. //2.通过索引进行删除
    4. //1.创建集合并添加元素
    5. List list = new ArrayList<>();
    6. list.add(1);
    7. list.add(2);
    8. list.add(3);
    9. //2.删除元素
    10. //请问:此时删除的是1这个元素,还是1索引上的元素?
    11. //为什么?
    12. //因为在调用方法的时候,如果方法出现了重载现象
    13. //优先调用,实参跟形参类型一致的那个方法。
    14. //list.remove(1);
    15. //手动装箱,手动把基本数据类型的1,变成Integer类型
    16. Integer i = Integer.valueOf(1);
    17. list.remove(i);
    18. System.out.println(list);
    
                    
  • 相关阅读:
    针对上两篇微信同声传译语音播报功能,又出现了坑
    Hbase之SnapShot快照操作
    读写 XML/JSON/INI 和 UBJSON 等格式的数据文件的统一接口
    Glide监听Activity生命周期源码分析
    局域网和广域网的区别
    基于萤火虫算法优化的BP神经网络预测模型附Matlab代码
    【DZBS-202/T低电流启动中间继电器】
    Docker安装Nacos-Server(单机模式)
    二苯并环辛炔DBCO共价连接负载葡聚糖纳米粒子(IDNP)
    施耐德电气:以服务和数字化推动可持续落地
  • 原文地址:https://blog.csdn.net/qq_69748833/article/details/132781627