Java 集合之List

news2024/11/15 12:25:51

一、集合常用API

1.添加相关的方法

add(E e)  确保此collection包含指定的元素(可选操作)

addAll(Collection<? extends E>  c)  将指定集合中的元素都添加到此集合中(可选操作)

2.删除相关的方法

clear()   移除这个集合中所有的元素(可选操作)

remove(Object o)  从此集合中移除指定元素的单个存在实例(可选操作)

removeAll(Collection<?> c)  移除此集合中那些也包含在指定集合中的所有元素(可选操作)

3.判断相关的方法

contains(Object o)  如果此collection包含指定的元素,则返回true。

containsAll(Collection<?>  c)  如果此集合包含指定集合中的所有元素,则返回true。

isEmpty()  如果此集合不包含元素,则返回true。

4.数组的转换相关方法

toArray()  返回此集合中所有元素的数组

二、List集合

List简介

List是有序的集合,就像数组一样。而List可以理解为是一个长度可变的数组,而且提供了丰富的API。List集合底层就是数组。

 public static void main(String[] args) {
        //创建一个List的集合
        List list = new ArrayList();
        //向末尾添加元素
        list.add("张三");//0
        list.add("李四");//1
        list.add("王五");//2
        System.out.println(list);

        //我们在1处的索引位置来插入元素,我们插入一个元素,该索引后面的元素都会向后一位
        list.add(1,"晁盖");
        System.out.println(list);

        //创建一个集合
        List list1 = new ArrayList();
        list1.add("一");
        list1.add("二");
        list1.add("三");
        list.addAll(list1);
        System.out.println(list);
    }

List迭代器Listlterator

jdk1.8文档下的方法

Iterator<E> iterator()   返回在此collection 的元素上进行迭代的迭代器。

通过ListIterator的方式遍历

 public static void main(String[] args) {
        List list = new ArrayList<>();
        list.add("张三");//0
        list.add("李四");//1
        list.add("赵六");//2
        list.add("王五");//3
        list.add("赵六");//4
        ListIterator listIterator = list.listIterator();
        while (listIterator.hasNext()){
            //获得迭代的元素
            String str = (String) listIterator.next();
            if ("赵六".equals(str)){
                //不能在一边遍历的时候一边操作集合,这样会有多线程的并发问题
                //list.add("任七")这个是不行的
                //迭代器可以给我们提供了一个add方法让我们避免并发问题,但是添加的时候本次遍历不生效
                listIterator.add("任七");
            }
            System.out.println(str);
        }
        System.out.println(list);
    }

使用for循环来动态的遍历List集合

public static void main(String[] args) {
        List list = new ArrayList<>();
        list.add("张三");//0
        list.add("李四");//1
        list.add("赵六");//2
        list.add("王五");//3
        list.add("赵六");//4
        for (int i=0;i<list.size();i++){
            //根据索引来获得对应的元素
            String str = (String) list.get(i);
            if ("赵六".equals(str)){
                list.add("任七"); //加在末尾
            }
            System.out.println(str);
        }
        System.out.println(list);
    }

List中元素是可以重复的

三、List实现类

ArrayList

特点
  • ArrayaList的底层是数组的原理
  • ArrayList中的元素可以重复
  • ArrayList是有序的集合,长度不固定
  • ArrayList不是线程安全的集合,适合不要求线程安全的需求来实现
  • 效率高,性能高
  • 如果线程要是同步的话,性能就会贬低

长度变化:

  1. 初始容量:当你创建一个 ArrayList 时,如果没有指定初始容量,它通常有一个默认的容量大小(在 Java 8 中,默认为 10)。如果你知道将要存储的元素数量,可以在创建时指定一个初始容量。

  2. 添加元素:当你向 ArrayList 添加元素时,如果添加后元素数量超过了当前容量,ArrayList 会自动进行扩容。扩容过程通常包括以下步骤:

    • 计算新的容量:通常是当前容量的1.5倍,加上1(以保持整数)。
    • 创建一个新的数组,其大小等于新计算出的容量。
    • 将旧数组中的所有元素复制到新数组中。
    • 将新数组赋值给 ArrayList 的内部数组引用。

LinkedList 

特点

1.LinkedList也不是线程安全的

2.底层结构是链表实现

3.有序集合,更适合做增删改的业务场景

链表:存储了元素和前后的地址

LinkedList是链表为原理,添加修改删除的效率高

Vector

Vector底层也是数组,是线程安全的

  public static void main(String[] args) {
        Vector v = new Vector();
        v.add("张三");
        v.add("李四");
        v.add("王五");

        Object o = v.get(1);
        System.out.println(o);
        System.out.println("------------------------------------");

        for (int i = 0;i<v.size();i++){
            Object o1 = v.get(i);
            System.out.println(o1);
        }
        System.out.println("------------------------------------");

        Enumeration elements = v.elements();
        while (elements.hasMoreElements()){
            Object o1 = elements.nextElement();
            System.out.println(o1);
        }
        //while (elements.hasMoreElements()) 这是一个while循环,它会一直执行,直到elements中没有更多的元素。hasMoreElements()方法是Enumeration接口的一部分,用于检查是否还有更多的元素可以遍历。
        //Object o1 = elements.nextElement(); 这行代码调用nextElement()方法,它会返回Enumeration中的下一个元素。每次调用nextElement()时,都会返回序列中的下一个元素,并将内部指针向前移动。
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2094172.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MongoDB之MongoDB Compass工具

MongoDB Compass 是 MongoDB 官方提供的一款图形化用户界面 (GUI) 工具&#xff0c;用于与 MongoDB 数据库进行交互和管理。Compass 提供了丰富的功能&#xff0c;能够帮助开发者、数据库管理员以及数据分析师轻松管理和分析 MongoDB 数据。以下是对 MongoDB Compass 的详细介绍…

英特尔Arrow Lake和Lunar Lake不受Vmin Shift不稳定性影响

近日&#xff0c;英特尔在其官方博客中发布了一篇关于Vmin Shift不稳定性问题的文章&#xff0c;该问题已知影响到了第13代&#xff08;Raptor Lake&#xff09;和第14代&#xff08;Raptor Lake Refresh&#xff09;酷睿处理器。根据英特尔的确认&#xff0c;其下一代Core Ult…

最长公共子序列补充题型:判断是否是子字符串

&#x1f9ca;&#x1f9ca;&#x1f9ca;新题型 最长公共子序列是基于动态规划思想&#xff0c;判断子序列长度的&#xff0c;这种方法的弊端就是dp需要很大&#xff0c;如果字符串长度很长就会超出内存限制。这里我们补充一种字符串很长的题型&#xff1a;给出字符串s和字符…

【 html+css 绚丽Loading 】 000029 三元化虚阵

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽Loading&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495…

VMware15安装教程(Pro版)

[VMware Workstation Pro 15.5下载链接]: https://ga90eobypbb.feishu.cn/docx/Jg2AdvMukowUVyxaCI8co2RfnGh 1.选中下载的压缩包&#xff0c;鼠标右键解压到”VMware Workstation Pro 15.5“文件夹 2.双击打开解压出来的文件夹&#xff0c;选中“VMware-workstation-full-15…

LVGL 控件之矩阵按钮(lv_buttonmatrix)

目录 一、矩阵按键1、组成2、创建矩阵3、按钮宽度4、按键属性5、按钮互斥6、按钮文本重着色7、按钮矩阵部件的事件8、API 函数二、例程 一、矩阵按键 1、组成 按钮矩阵部件由两个部分组成&#xff1a;主体背景和按钮&#xff0c;示意图如下&#xff1a; LV_PART_MAIN&#xf…

DiskCache:Python开发者的磁盘缓存利器

什么是DiskCache&#xff1f; DiskCache是一个用纯Python编写的轻量级缓存库&#xff0c;它利用磁盘空间来存储缓存数据。与传统的内存缓存相比&#xff0c;DiskCache可以利用磁盘上未被充分利用的空间&#xff0c;为需要大量缓存数据的应用程序提供支持。它的核心是基于SQLite…

C++创建并初始化对象

文章目录 一、对象的创建1.1 定义类1.2 创建对象 二、对象的初始化2.1 默认构造函数2.2 带参数的构造函数2.3 初始化列表 三、拷贝构造函数四、对象的销毁五、总结 视频讲解笔记在栈上创建在堆上创建new 在C中&#xff0c;创建并初始化对象是面向对象编程&#xff08;OOP&#…

基于yolov8的驾驶员行为检测疲劳检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的驾驶员行为检测疲劳检测系统是一种创新的驾驶安全解决方案。该系统利用YOLOv8这一先进的目标检测算法&#xff0c;结合驾驶员疲劳驾驶数据集&#xff0c;能够实时、准确地监测并分析驾驶员的面部表情和行为模式&#xff0c;从而快速识别疲劳状态。 …

关于分布式数据库缓存设计的那点事和实践

目录 案例 【题目】 【问题 1】(9 分) 【问题 2】(8 分) 【问题 3】(8 分) 【答案】 【问题 1】答案 【问题 2】解析 【问题 3】解析 相关推荐 案例 阅读以下关于分布式数据库缓存设计的叙述&#xff0c;在答题纸上回答问题 1 至问题 3。 【题目】 某企业是为城市高…

【网络协议】精讲OSI七层模型、TCP/IP四层、五层模型区别!图解超赞超详细!!!

目录 1. OSI与TCP/IP模型的网络协议层次结构差异 1.1 OSI模型的七层结构 1.2 TCP/IP模型的四层结构 1.3 TCP/IP模型的五层结构 2. OSI七层模型和TCP/IP协议模型的区别 2.1 区别总结&#xff1a; 3. 网络协议分层的优点 1. OSI与TCP/IP模型的网络协议层次结构差异 协议分…

拥抱开源拥护国产|暴雨打造最强AI的服务器操作系统!

8月30日&#xff0c;主题为“进化重构赴未来”的2024龙蜥操作系统大会(OpenAnolis Conference)在北京举办。龙蜥社区作为国内领先的开源操作系统根社区&#xff0c;推出的Anolis OS及衍生版装机量已突破800万套&#xff0c;实现了从开源到商业化的良性循环发展。 2024 龙蜥操作…

【惊天BUG】select * from 表 where value = 0;查询结果让大师兄都傻眼了

前言 &#x1f34a;缘由 线上问题把我坑&#xff0c;一查数据让我蒙 &#x1f423;闪亮主角 大家好&#xff0c;我是JavaDog程序狗 今天跟大家分享一个本狗造成的线上事故&#xff0c; 一个简单的SQL查询语句导致的bug &#x1f608;你想听的故事 最近狗哥有点飘&#xf…

MCU1.51单片机介绍

1.单片机&#xff08;MCU 全称 Mirco Controller Unit 意为微小控制器的集合&#xff09; 相当于一台迷你电脑&#xff08;集成了很多硬件&#xff09; 2.作用 传感&#xff08;采集信息&#xff09;&#xff0c;处理&#xff08;CPU Central Processing Unit 中央处理器&am…

智能的瓶颈在于事物表征的弥散与聚合性(弥聚性)

动态“弥散与聚合性”&#xff08;弥聚性&#xff09;是智能系统面临的一个重要挑战。这个概念涉及如何在处理信息时平衡广度和深度&#xff0c;以及如何有效地表征和组织知识。 &#xff08;1&#xff09;弥散性 弥散性指的是信息或知识的分散性和多样性。智能系统需要处理来自…

非对称RAID破解SSD异构存储难题

上一篇文章&#xff08;Kioxia的NVMe RAID卸载有何亮点&#xff1f;&#xff09;介绍了NVMe RAID卸载方案内容。本文我们结合一篇学术论文&#xff0c;学习一下新的非对称RAID架构&#xff5e; 随着大数据时代的到来&#xff0c;全闪存阵列&#xff08;All-Flash Arrays, AFAs&…

校园一卡通|基于SprinBoot+vue的校园一卡通系统(源码+数据库+文档)

校园一卡通系统 基于SprinBootvue的校园一卡通系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 后台模块实现 管理员功能实现 学生功能实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍…

linux驱动 -- PWM配置和SysFs操作方法

1&#xff1a;PWM介绍 PWM的定义为:可调节脉冲调节器&#xff0c;换句话来说就是一个总周期不变&#xff0c;占空比可调节的方波。 2&#xff1a;PWM的总周期和占空比、有效点平 方波&#xff1a;在信号领域一般分为数字信号和模拟信号&#xff0c;数字信号就两种状态&#…

UML类图中的依赖,继承,和实现关系

依赖关系 依赖关系是一种使用关系&#xff0c;它是对象之间耦合度最弱的一种关系。在代码中&#xff0c;某个类通过局部变量&#xff0c;方法的参数或者对静态方法的调用来访问另外一个类的方法。 依赖关系通过带箭头的虚线表示&#xff0c;箭头从使用类指向被依赖的类 继承关…

中仕公考怎么样?函授大专可以考公吗?

函授大专学历&#xff0c;作为成人高等教育的一种形式&#xff0c;是被认证的&#xff0c;所以在绝大多数情况下&#xff0c;持有函授大专学历的个人符合公务员及事业单位岗位的报考资格。只有招聘公告中明确要求考生必须持有全日制或统招学历时&#xff0c;才不符合条件。 在…