首页 > 其他分享 >04List系列的集合

04List系列的集合

时间:2023-10-30 13:12:28浏览次数:36  
标签:遍历 系列 List 04List 元素 list 索引 add 集合

List集合

  • 特点:

    • 有序:存和取的元素顺序一致
    • 有索引:可以通过索引操作元素
    • 可重复:存储的元素可以重复

    List集合导图

一、List集合的特有方法

  • Collection的方法List都继承了

  • List集合因为有索引,所以多了很多索引操作的方法。

    方法名称 说明
    void add(int index,E element) 在此集合中指定的位置插入指定的元素
    E remove(int index) 删除指定索引处的元素,返回被删除的元素
    E set(int index,E element) 修改指定索引处的元素,返回被修改的元素
    E get(int index) 返回指定索引处的元素
  • 案例一:

    import java.util.ArrayList;
    import java.util.List;
    
    public class A01_ListDemo1 {
        public static void main(String[] args) {
            /*
                List系列集合独有的方法:
                    void add(int index,E element) 在此集合中指定的位置,插入元素
                    E remove(int index)           删除指定索引处的元素,返回被删除的元素
                    E set(int index,E element)    修改指定索引处的元素,返回被修改的元素
                    E get(int index)              返回指定索引处的元素
             */
            //1.创建一个集合
            List<String> list = new ArrayList<>();
    
            //2.添加元素
            list.add("aaa");
            list.add("bbb");
            list.add("ccc");
    
            //void add(int index,E element) 在此集合中指定的位置,插入元素。
            //细节:原来索引上的元素会依次往后移。
            list.add(1,"good");
    
            //E remove(int index) 删除指定索引处的元素,返回被删除的元素。
            String remove = list.remove(0);
            System.out.println("删除的元素:"+remove);
    
            //E set(int index,E element) 修改指定索引处的元素,返回被修改的元素。
            String result = list.set(0,"GOOD");
            System.out.println("被修改的元素:"+result);
    
            //E get(int index) 返回指定索引处的元素。
            String s = list.get(0);
            System.out.println("获取的元素"+s);
    
            
            //3.打印集合
            System.out.println(list);
        }
    }
    

    1

  • 案例二:

    package a02mylist;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class A02_ListDemo2 {
        public static void main(String[] args) {
            //List系列集合中的两个删除的方法
            //1.直接删除元素
            //2.通过索引进行删除
    
            //1.创建集合并添加元素
            List<Integer> s = new ArrayList<>();
    
            s.add(1);
            s.add(2);
            s.add(3);
    
            //2.删除元素
            //请问:此时删除的是1这个元素,还是1索引上的元素?
            //为什么?
            //因为在调用方法的时候,如果方法出现了重载的现象。优先调用,实参和形参类型一致的那个方法。
            //s.remove(1);
    
            //解决:手动装箱,手动把基本数类型1,变成Integer类型
            Integer i = Integer.valueOf(1);
            s.remove(i);
    
            System.out.println(s);
        }
    }
    

    2

二、List集合的遍历方式

  • 迭代器遍历

  • 列表迭代器遍历

  • 增强for遍历

  • Lambda表达式遍历

  • 普通for循环遍历(因为List集合存在索引)

  • 案例:

    package a02mylist;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.ListIterator;
    import java.util.function.Consumer;
    
    public class A03_ListDemo3 {
        public static void main(String[] args) {
            /*
                List系列集合的五种遍历方式:
                1.迭代器
                2.列表迭代器
                3.增强for
                4.Lambda表达式
                5.普通for循环
            */
    
            //1.创建并添加元素
            List<String> list = new ArrayList<>();
            list.add("aaa");
            list.add("bbb");
            list.add("ccc");
    
            //1.迭代器
           /* Iterator<String> it = list.iterator();
            while(it.hasNext()){
                String str = it.next();
                System.out.println(str);
            }*/
    
            //2.增强for
            /*for (String s : list) {
                System.out.println(s);
            }*/
    
            //3.Lambda表达式
           /* list.forEach(new Consumer<String>() {
                @Override
                public void accept(String s) {
                    System.out.println(s);
                }
            });
                //化简
            list.forEach(s-> System.out.println(s));
                //化简2
            list.forEach(System.out::println);*/
    
            //普通for
            /*for (int i = 0; i < list.size(); i++) {
                //i:依次表示集合中每一个索引
                String s = list.get(i);
                System.out.println(s);
            }*/
    
            //5.列表迭代器
            //获取一个列表迭代器对象,里面的指针默认也是指向零索引的。
            //额外添加了一个方法:在遍历过程中,可以添加元素。
            ListIterator<String> it = list.listIterator();
            while (it.hasNext()){
                String str = it.next();
                if ("bbb".equals(str)){
                    it.add("qqq");
                }
                System.out.println(str);
            }
            System.out.println(list);
        }
    }
    

    3

三、五种遍历方式对吧

  • 迭代器遍历:在遍历的过程中需要删除元素,请使用迭代器。
  • 列表迭代器:在遍历过程中需要添加元素,请使用列表迭代器。
  • 增强for遍历和Lambda表达式:仅仅想遍历,那么使用增强for循环或Lambda表达式
  • 普通for,如果遍历的时候想操作索引,可以用普通for。

标签:遍历,系列,List,04List,元素,list,索引,add,集合
From: https://www.cnblogs.com/ahbzbn/p/17797567.html

相关文章

  • 工业自动化控制通信协议Profinet系列-3、CoDeSys软PLC方案介绍
    工业自动化控制通信协议Profinet系列-3、CoDeSys软PLC方案介绍文章目录工业自动化控制通信协议Profinet系列-3、CoDeSys软PLC方案介绍一、前言二、Profinet搭建资料收集三、CoDeSys系列四、接下来一、前言之前在树莓派desktop上已经成功编译运行测试程序,但是还需要主站去和其交互......
  • CoDeSys系列-3、Windows运行时软PLC主站和p-net从站IO设备组网测试
    CoDeSys系列-3、Windows运行时软PLC主站和p-net从站IO设备组网测试文章目录CoDeSys系列-3、Windows运行时软PLC主站和p-net从站IO设备组网测试一、前言二、Windows运行时软plc配置编程1、安装Windows下的运行时扩展包(非必要)2、创建项目2.1、创建标准工程2.2、添加RTE设备或非RTE设......
  • STM32F3系列 ADC采样单端采样模式(基于LL库)
    STM32F3系列ADC单端采样(基于LL库)芯片型号:STM32f303RBT6开发软件:MDK5&CubeMX&VSCode目录目录STM32F3系列ADC单端采样(基于LL库)目录引言1基础知识1.1ADC转换基本流程1.2时钟树1.3关键参数1.3.1位数1.3.2触发信号1.3.3采样时间1.3.4转换时间2CubeMx配置步骤......
  • VisionPro如何在ToolBlock的输入输出中新增特定类型的集合
    现在系统类型下方定位到泛型集合(下图的HashSet)然后在代码中进行赋值即可改变泛型的具体类型  ......
  • HashMap集合遍历随机性问题分析
    一、原因分析1.1HashMap对象的遍历HashMap的遍历是通过此类中字段table数组进行顺序遍历,原因如下所示:1#HashMap迭代遍历源码2publicfinalbooleanhasNext(){3returnnext!=null;4}56finalNode<K,V>nextNode(){7Node<K,V>[]t;......
  • 软考系列(系统架构师)- 2010年系统架构师软考案例分析考点
    试题一软件系统架构选择【问题1】(7分)在实际的软件项目开发中,采用恰当的架构风格是项目成功的保证。请用200字以内的文字说明什么是软件架构风格,并对主程序-子程序和管道-过滤器这两种架构风格的特点进行描述。软件架构风格是描述特定软件系统组织方式的惯用模式。组织方式描......
  • 没闲着系列 04
    Today,IstudiesLayuiforhalfaday,AndIsetupthedeadlineremindlayerwindowsfunctionthistime.顺便又看了下Django,Python的教程,有个教程的讲师说得挺对,就算学习得东西多如牛毛都不如下手操练才能快速提升,当然,跟他们Facebook或者Google的是不太可比性的,毕竟他们内......
  • 软考系列(系统架构师)- 2011年系统架构师软考案例分析考点
    试题一软件架构(质量属性效用树、架构风险、敏感点、权衡点)【问题2】(13分)在架构评估过程中,需要正确识别系统的架构风险、敏感点和权衡点,并进行合理的架构决策。请用300字以内的文字给出系统架构风险、敏感点和权衡点的隹义,并从题干(a)~(m)中各选出1个对系统架构风险、敏感点和......
  • Java中的Set集合
    Set集合的特点:不能存储相同元素。Set接口两大实现(常用):HashSetTreeSetSet是一个抽象接口,不能对Set进行实例化。(Setset=newSet();)错误该接口主要继承于Collection接口,所以具有Collection的一些常见的方法。1.add()向集合中添加元素,返回Boolean2.clear()  ......
  • 你知道Java21中的顺序集合吗?
    在Java21中,处理集合的方式得到了改进,因为三个新的接口已经融入了现有的类型层次结构。这些顺序集合为我们提供了一个统一的API来访问第一个和最后一个元素,并以相反的顺序处理集合。为了更好地理解顺序集合是什么,让我们回顾一下集合之前的样子。Java集合框架在Java1.2中引入的C......