• java中集合的List


    集合的List

    可以存储重复元素

    以下情况使用 ArrayList :

    • 频繁访问列表中的某一个元素。
    • 只需要在列表末尾进行添加和删除元素操作。

    以下情况使用 LinkedList :

    • 你需要通过循环迭代来访问列表中的某些元素。
    • 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。

    一.ArrayList

    可以保存重复元素,底层是数组实现,添加元素的类型可以是任意类型的
    虽然集合中默认是可以添加任意数据类型,但是后续处理时,会出现类型转换问题
    底层是一个数组,默认长度是10,当数组装满时,会自动扩容,(new=old+old/2)
    		ArrayList arrayList=new ArrayList();
            arrayList.add(1);
            arrayList.add("abd");
            arrayList.add(true);
            for (int i=0;i<arrayList.size();i++){
                Object obj=arrayList.get(i);
                if(obj instanceof String){
                    String s=(String)obj;//向下转型
                    System.out.println(s.length());
                }
            }
    
            //ArrayList 定义时,为集合中可以存储的数据设定一个类型,必须是类类型
            ArrayList<Integer>arrayList1=new ArrayList<>();
            arrayList1.add(10);//自动装箱
            ArrayList<String>arrayList2=new ArrayList<>();
            arrayList2.add("aa");
    
            ArrayList<String> arrayList3=new ArrayList<>();
            arrayList3.add("a");
            arrayList3.add("b");
            arrayList3.add("c");
            arrayList3.add("d");
            arrayList3.add("e");
            arrayList3.add("f");
            arrayList3.add("g");
            arrayList3.add("h");
            arrayList3.add("i");
            arrayList3.add("j");
            System.out.println(arrayList3);
            arrayList3.add(1,"H");//在1前加H
            System.out.println(arrayList3);
            arrayList3.remove("j");//把遇到的第一个j去掉
            System.out.println(arrayList3);
            arrayList3.remove(5);//把第5个索引去掉
            System.out.println(arrayList3);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    ArrayList<String> arrayList3=new ArrayList<>();
            arrayList3.add("a");
            arrayList3.add("b");
            arrayList3.add("c");
            arrayList3.add("d");
            arrayList3.add("e");
            arrayList3.add("f");
            arrayList3.add("g");
            arrayList3.add("h");
            arrayList3.add("i");
            arrayList3.add("j");
            System.out.println(arrayList3.remove(0));//删除并返回指定位置上的元素(String类)
    
            arrayList3.clear();//清空元素
            System.out.println(arrayList3.contains("X"));//是否包含指定的元素
    
            System.out.println(arrayList3.get(3));//获得指定位置上的元素(底层是数组,获取元素的速度是最快的)
    
            System.out.println(arrayList3.indexOf("e"));//e的第一次索引
            System.out.println(arrayList3.lastIndexOf("e"));//e的最后一次索引
            System.out.println(arrayList3.isEmpty());//判断是否为空,空true
            arrayList3.set(7,"Y");//替换指定位置元素
    
            System.out.println(arrayList3.size());//获取集合中元素个数用size,字符串长度用length
    
            System.out.println(arrayList3);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    二.LinkedList

    元素比较多的用LInkedList

    方法和ArrayList基本一致,只不过方法实现是用链表实现的

    三.vector

    • Vector 是同步访问的。
    • Vector 包含了许多传统的方法,这些方法不属于集合框架。

    Vector 主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。

    Vector 类支持 4 种构造方法。

    第一种构造方法创建一个默认的向量,默认大小为 10

    四.迭代器

    Java迭代器(Iterator)是 Java 集合框架中的一种机制,是一种用于遍历集合(如列表、集合和映射等)的接口。

    迭代器接口定义了几个方法,最常用的是以下三个:

    • next() - 返回迭代器的下一个元素,并将迭代器的指针移到下一个位置。
    • hasNext() - 用于判断集合中是否还有下一个元素可以访问。
    • remove() - 从集合中删除迭代器最后访问的元素(可选操作)。
    LinkedList<String> l=new LinkedList<>();
            l.add("a");
            l.add("b");
            l.add("c");
            l.add("d");
            l.add("e");
            l.add("f");
            l.add("g");
            l.add("h");
            l.add("i");
            l.add("j");
    
            for (int i = 0; i < l.size(); i++) {
                System.out.println(l.get(i));
            }
            //增强for遍历
            for(String s:l){
                System.out.println(l);
            }
    //使用迭代器遍历
            // 获取迭代器
            Iterator<String> qwq = l.iterator();
            //hasNext():判断是否存在下一个元素
            while(qwq.hasNext()){
                //如果存在,则调用next实现迭代
                System.out.println(l);
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
  • 相关阅读:
    Codeforces Round #815 (Div. 2)
    Arduino IDE + Esp32 Cam + 实现视频流 + 开发环境部署
    IDEA重装后打开的一些设置
    决策树算法介绍:原理与案例实现
    若依vue前端 报错error:0308010C:digital envelope routines::unsupported
    CloudCompare&PCL 点云添加高斯噪声
    CentOS 离线升级Linux的内核并删除多有内核
    Redis的分布式锁问题(八)基于Redis的分布式锁
    JavaScript对象类型数据深拷贝方法【主要解决JSON.parse(JSON.stringify()会去掉函数属性的问题】
    使用 GraphiQL 可视化 GraphQL 架构
  • 原文地址:https://blog.csdn.net/qq_45576281/article/details/132947666