java中集合的List

2023-09-17 17:13:52

集合的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<String> 定义时,为集合中可以存储的数据设定一个类型,必须是类类型
        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);
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);

二.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);
        }
更多推荐

图像处理的创意之旅:逐步攀登Python OpenCV的高峰

目录介绍OpenCV简介安装OpenCV加载和显示图像图像处理目标检测图像处理的高级应用视频处理综合案例:人脸识别应用总结介绍欢迎来到本篇文章,我们将一起探索如何使用Python中的OpenCV库进行图像处理和计算机视觉任务。无论您是初学者还是有一定编程经验的开发者,本文将从入门到精通地引导您,帮助您理解OpenCV的

Windows 上的本机 Android 开发入门

🎬岸边的风:个人主页🔥个人专栏:《VUE》《javaScript》⛺️生活的理想,就是为了理想的生活!目录安装AndroidStudio创建新项目Java或Kotlin最低API级别即时应用支持和Androidx项目项目文件使用C或C++进行Android游戏开发设计指南FluentDesignSystemforA

在 Android 设备或仿真器上进行测试

🎬岸边的风:个人主页🔥个人专栏:《VUE》《javaScript》⛺️生活的理想,就是为了理想的生活!目录WindowsDefender概述如何将排除项添加到WindowsDefenderAndroid开发时要考虑的排除项本指南介绍如何在WindowsDefender安全设置中设置排除项,以便在使用Windows计

vue基础知识十二:双向数据绑定是什么

一、什么是双向绑定我们先从单向绑定切入单向绑定非常简单,就是把Model绑定到View,当我们用JavaScript代码更新Model时,View就会自动更新双向绑定就很容易联想到了,在单向绑定的基础上,用户更新了View,Model的数据也自动被更新了,这种情况就是双向绑定举个栗子当用户填写表单时,View的状态就被

第 113 场 LeetCode 双周赛题解

A使数组成为递增数组的最少右移次数数据范围小直接模拟…classSolution{public:intminimumRightShifts(vector<int>&nums){for(intop=0;op<nums.size();op++){if(is_sorted(nums.begin(),nums.end()))/

udp的简单整理

最近思考udp处理的一些细节,根据公开课,反复思考,终于有所理解,做整理备用。0:简单汇总1:udp是基于报文传输的,接收方收取数据时要一次性读完。2:借助udp进行发包,发大包也是没有问题的,借助IP层ip分片。===》ip分片可以发生在原始主机上,也可以发生在中间路由器上(MTU值)===》ip分片后,可以再分片,

Swift 5.5之Continuation

Continuation是Swift5.5中引入的一种新的编程模型,用于管理异步任务的结果。它允许您在异步任务完成后使用结果继续执行代码,可以与Async/Await一起使用,以简化异步编程。下面是使用Continuation的基本步骤:导入Continuation模块在使用Continuation之前,需要在代码文件

mysql知识大全

MySQL知识大全(2)MySqL基础为1—7(增删改查基础语法),MySQL进阶知识为8—11(约束、数据库设计、多表查询、事务)1、数据库相关概念以前我们做系统,数据持久化的存储采用的是文件存储。存储到文件中可以达到系统关闭数据不会丢失的效果,当然文件存储也有它的弊端。假设在文件中存储以下的数据:姓名年龄性别住址张

Python案例实现|租房网站数据表的处理与分析

在综合实战项目中,“北京链家网”租房数据的抓取任务已在上一篇完成,得到了数据表bj_lianJia.csv,如图1所示。该数据表包含ID、城区名(district)、街道名(street)、小区名(community)、楼层信息(floor)、有无电梯(lift)、面积(area)、房屋朝向(toward)、户型(mo

leetcode 10. 正则表达式匹配

2023.9.20感觉是目前做过dp题里最难的一题了...本题首要的就是需要理解题意,翻了评论区我才发现之前一直理解的题意是错的。我原来理解的“*匹配0次”是指:*直接消失,不会影响到前面的字符。但是*和前一个字符其实是连体的,所以说:*如果匹配0次,那么前一个字符就没了,消失了;*如果匹配1次,那么才相当于*消失了,

【Python】PySpark 数据处理 ① ( PySpark 简介 | Apache Spark 简介 | Spark 的 Python 语言版本 PySpark | Python 语言场景 )

文章目录一、PySpark简介1、ApacheSpark简介2、Spark的Python语言版本PySpark3、PySpark应用场景4、Python语言使用场景一、PySpark简介1、ApacheSpark简介Spark是Apache软件基金会顶级项目,是开源的分布式大数据处理框架,专门用于大规模数据处理,是一款

热文推荐