java List集合(ArrayList,LinkedList,Vector)

Hi i,m JinXiang


⭐ 前言 ⭐

本篇文章主要介绍java List集合的三种实现类ArrayList,LinkedList,Vector以及部分理论知识


🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁

🍉博主收将持续更新学习记录获,友友们有任何问题可以在评论区留言


目录

什么是List集合?

为什么要使用List集合

List集合的特点:

List集合总结:

ArrayList,LinkedList,Vector的相同点与区别:

使用List集合(实操)

1、ArrayList(增删改查)

2、LinkedList(增删改查)

3、Vector(增删改查)


什么是List集合?

ArrayList,LinkedList,Vector都是隶属于List集合的一种;

集合List
  • List代表了有序可重复集合,可直接根据元素的索引来访问。
  • List接口常用的实现类有:ArrayList、LinkedList、Vector。

为什么要使用List集合

List集合的特点:

集合中的元素允许重复
集合中的元素是有顺序的,各元素插入的顺序就是各元素的顺序
集合中的元素可以通过索引来访问或者设置

List集合总结:

1==):ArrayList
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程不安全,效率高

2==):Vector
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程安全,效率低

3==):LinkedList
优点: 底层数据结构是链表,查询慢,增删快。
缺点: 线程不安全,效率高

ArrayList,LinkedList,Vector的相同点与区别:
相同点:
  • 1、ArrayList、Vector、LinkedList类均在java.util包中,均为可伸缩数组,即可以动态改变长     度的数组。
  • 2、都有序,有索引,可重复。(此处的索引是可以通过索引查找该元素)
不同点:

        1、ArrayList和Vector都是在内存中开辟连续内存来存储数据,有一个初始化的容量大小,可以通过序号来访问元素,虽然速度较快,但是插入元素时需要移动容器中的元素,所以对数据的插入操作比较麻烦。同时对储存空间进行动态的扩容时,为了提高效率,每次都是增加多个存储单元,Vector默认是原来的两倍,ArrayList是1.5倍。

Vector默认采用的是立即初始化容积值的操作,也可以设置初始化容积和步长值,构造器中只有一个初始化容积值,默认的扩容步长值为0
        2、Array List和Vector最大的区别是synchronized的使用,Array List没有一个方法是同步的,而Vector的绝大多数的方法都是直接或者间接是同步的所以Vector线程是安全的,而Array List线程是不安全的。

Array List添加元素的add方法调用的是私有的add方法,进行扩容时是用size+1的方式,调用grow方法,再调用参数为minCapacity的newCapacity方法而remove删除方法则是调用的fastRemove方法
Vector中add方法与Array List基本相同,而remove方法调用的是removeElement方法 ,删除指定位置的元素再调用removeElementAt方法
        3、LinkedList是采用双向列表来实现的,对数据的索引需要从列表头开始遍历,因此用于随机访问则效率比较低。但是插入元素时不需要对数据进行移动,因此插入效率较高。同时,LinkedList也是线程不安全的容器。

         Linked List中的节点定义的是一个静态内部类;添加操做add调用的是linkLast方法,是在链表尾部添加数据,在指定位置新增数据,则针对索引需要进行合法性检查;查找指定元素的下标索引值用indexOf方法;删除指定位置上的元素用int类型参数的remove方法调用的是unlike方法。
 

使用List集合(实操)

1、ArrayList(增删改查)

import org.junit.Test;import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Vector;public class vector {/*** ArrayList的* 增删改查操作* */@Testpublic void ArrayList_Test(){ArrayList arrayList = new ArrayList<>(); //默认空间10//新增--添加一个数据arrayList.add("HELLO WORLD!");//新增--添加一个数据(在此列表中的指定位置插入指定的元素)arrayList.add(1,"张三");//删除--删除一个数据arrayList.remove("你好");//删除--删除一个数据(删除该列表中指定位置的元素)arrayList.remove(1);//删除--删除列表中所有数据arrayList.clear();//修改--修改一个数据(用指定的元素替换此列表中指定位置的元素)arrayList.set(1, "李四");//返回此列表中的元素数arrayList.size();//查看所有信息System.out.println(arrayList);}
}

2、LinkedList(增删改查)

import org.junit.Test;import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Vector;public class vector {/*** LinkedList的* 增删改查操作* */@Testpublic void LinkedList_Test(){LinkedList linkedList = new LinkedList<>();//新增--添加一个数据linkedList.add("HELLO WORLD!");//新增--添加一个数据(在此列表中的指定位置插入指定的元素)linkedList.add(1,"张三");//删除--删除一个数据linkedList.remove("你好");//删除--删除一个数据(删除该列表中指定位置的元素)linkedList.remove(1);//删除--但不删除此列表的头(第一个元素)linkedList.element();//删除--检索并删除此列表的头(第一个元素)linkedList.poll();//删除--删除列表中所有数据linkedList.clear();//修改--修改一个数据(用指定的元素替换此列表中指定位置的元素)linkedList.set(1, "李四");//返回此列表中的元素数linkedList.size();//查看所有信息System.out.println(linkedList);//获取元素--获取此列表中指定位置的元素linkedList.get(1);//获取元素--此列表中的第一个元素linkedList.getFirst();//获取元素--此列表中的最后一个元素linkedList.getLast();}
}

3、Vector(增删改查)

import org.junit.Test;import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Vector;public class vector {/*** Vector的* 增删改查操作* */public void Vector_Test(){Vector v = new Vector<>();//新增--新增一个数据v.add("你好");//在新增--添加一个数据(在此列表中的指定位置插入指定的元素)v.add(1,"张三");//删除--删除一个数据v.remove("你好");//删除--删除一个数据(删除该列表中指定位置的元素)v.remove(1);//删除--删除列表中所有数据v.clear();//增加空间容量(需要增加此量的容量,以确保它可以至少保存最小容量参数指定的组件数。)v.ensureCapacity(5); //增加5//比较--与指定对象进行比较,来判断是否相等v.equals("张三");//获取元素--获取此列表中指定位置的元素v.get(1);//返回哈希值v.hashCode();//获取元素--获取此量中指定元素第一次出现的索引v.indexOf("你好");//插入--在指定的位置插入指定对象作为该量中的第一个indexv.insertElementAt("你好", 1);//自动排序(以正确的顺序返回该列表中的元素迭代器)v.iterator();}
}

Vector类实现了可扩展的对象数组。 像数组一样,它包含可以使用整数索引访问的组件。 但是, Vector的大小可以根据需要增长或缩小,以适应在创建Vector之后添加和删除项目。有关详细信息,请参阅博客 jdk_api_1.8-JAVA中文版API手册(免费版)-CSDN博客 中提供的APL工具,查看各个实体文档和子类文档进行深入了解!

总结不易,希望uu们不要吝啬亲爱的👍哟(^U^)ノ~YO!!如有问题,欢迎评论区批评指正😁

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

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

相关文章

HassOS使用nmcli设置静态IPv4地址及网关、DNS

目录 显示hass在使用的默认连接显示此连接的所有配置编辑hass默认连接添加静态IP地址添加DNS和网关删除DNS查看IPv4属性保存配置并退出nmcli重载配置 首先控制台登陆Home Assistant OS Welcome to Home Assistant homeassistant login:使用root用户登录&#xff08;无需密码&a…

【数据结构】树与二叉树(廿五):树搜索给定结点的父亲(算法FindFather)

文章目录 5.3.1 树的存储结构5. 左儿子右兄弟链接结构 5.3.2 获取结点的算法1. 获取大儿子、大兄弟结点2. 搜索给定结点的父亲a. 算法FindFatherb. 算法解析c. 代码实现 3. 代码整合 5.3.1 树的存储结构 5. 左儿子右兄弟链接结构 【数据结构】树与二叉树&#xff08;十九&…

vue实现动态路由菜单!!!

目录 总结一、步骤1.编写静态路由编写router.jsmain.js注册 2.编写permisstions.js权限文件编写permisstions.jsaxios封装的APIstore.js状态库system.js Axios-APIrequest.js axios请求实例封装 3.编写菜单树组件MenuTree.vue 4.主页中使用菜单树组件 总结 递归处理后端响应的…

量子力学:科技前沿的探索与挑战

量子力学:科技前沿的探索与挑战 一、量子力学的魅力与挑战 量子力学是研究微观粒子如电子、光子等行为的物理学分支。与经典力学不同,量子力学描述了一个充满不确定性和概率性的世界。在这个世界里,粒子可以同时处于多个状态,只有当我们对其进行测量时,它才会“选择”一个…

【古月居《ros入门21讲》学习笔记】11_客户端Client的编程实现

目录 说明&#xff1a; 1. 服务模型 2. 实现过程&#xff08;C&#xff09; 创建功能包 创建客户端代码&#xff08;C&#xff09; 配置客户端代码编译规则 编译 运行 3. 实现过程&#xff08;Python&#xff09; 创建客户端代码&#xff08;Python&#xff09; 运行…

Find My电容笔|苹果Find My技术与电容笔结合,智能防丢,全球定位

随着平板电脑的流行&#xff0c;有不少厂商都投入到了电容笔的开发当中&#xff0c;现在的电容笔不仅在精度上有了提高&#xff0c;甚至在笔触和压感上的研究都有进步。电容笔是利用导体材料制作的具有导电特性、用来触控电容式屏幕完成人机对话操作用的笔&#xff0c;电容笔通…

线性可分SVM摘记

线性可分SVM摘记 0. 线性可分1. 训练样本到分类面的距离2. 函数间隔和几何间隔、(硬)间隔最大化3. 支持向量 \qquad 线性可分的支持向量机是一种二分类模型&#xff0c;支持向量机通过核技巧可以成为非线性分类器。本文主要分析了线性可分的支持向量机模型&#xff0c;主要取自…

【藏经阁一起读】(78)__《Apache Tomcat 的云原生演进》

【藏经阁一起读】&#xff08;78&#xff09; __《Apache Tomcat 的云原生演进》 目录 __《Apache Tomcat 的云原生演进》 一、读后感 二、文章知识点摘要 2.1、Tomcat的技术内幕和在喜马拉雅的实践 2.2、GraalVM static compilation in web container application&…

重生奇迹MU魔法师操作技能

重生奇迹MU魔法师增加伤害加点方式 一、智力敏捷加点&#xff1a;2点智力1点敏捷&#xff0c;这种加点就是智敏结合的加点了&#xff0c;属性是不错的&#xff0c;提升了非常多的属性点&#xff0c;智力是偏重输出的&#xff0c;也是法师最常见的一种加点了&#xff0c;输出伤…

随笔(持续更新)

随笔&#xff08;持续更新&#xff09; 1、某个网络有没有连通 要获取某个网站的ip地址&#xff0c;可以通过ping它的域名就可以得到IP地址 例如&#xff1a;我想获取百度的ip地址&#xff08;Windows环境&#xff09; C:\Users\tq>ping www.baidu.com正在 Ping www.a.s…

pdf文件编辑,[增删改查]

pdf文件是投标文件中必不可少的格式&#xff0c;传统的方式先编辑word格式&#xff0c;最后生成pdf&#xff0c;但是有时候需要直接编辑pdf文件&#xff0c;编辑pdf的工具无疑 “adobe acrobat dc”是最好用的之一了 1.把图片文件添加到pdf指定位置&#xff0c;例如把一张图片添…

C++数据结构:图

目录 一. 图的基本概念 二. 图的存储结构 2.1 邻接矩阵 2.2 邻接表 三. 图的遍历 3.1 广度优先遍历 3.2 深度优先遍历 四. 最小生成树 4.1 最小生成树获取策略 4.2 Kruskal算法 4.3 Prim算法 五. 最短路径问题 5.1 Dijkstra算法 5.2 Bellman-Ford算法 5.3 Floyd-…

HCIP-十二、BGP常用属性

十二、BGP常用属性 实验拓扑实验需求及解法1.IP 地址已配置&#xff0c;自行测试直连。2.AS100 中运行 OSPF3.AS200 中运行 ISIS4.运行 BGP5.发布 BGP 路由6.修改起源属性 Origin7.修改 AS-path8.修改本地优先 Local-preference9.修改 MED 实验拓扑 实验需求及解法 本实验模拟…

【算法】滑动窗口题单——1.定长滑动窗口⭐

文章目录 1456. 定长子串中元音的最大数目2269. 找到一个数字的 K 美丽值1984. 学生分数的最小差值&#xff08;排序&#xff09;643. 子数组最大平均数 I1343. 大小为 K 且平均值大于等于阈值的子数组数目2090. 半径为 k 的子数组平均值2379. 得到 K 个黑块的最少涂色次数1052…

CCFCSP试题编号:202109-2试题名称:非零段划分

用差分法 #include<iostream> #include<algorithm> #include<cstring> using namespace std;const int N 500000; const int M 10000; int a[N 2 ] { 0 }; int d[M 1] { 0 };int main() {int n;cin >> n;for (int i 1; i < n; i){cin >&g…

YOLOv5独家原创改进:自研独家创新MSAM注意力,通道注意力升级,魔改CBAM

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文自研创新改进&#xff1a;MSAM&#xff08;CBAM升级版&#xff09;&#xff1a;通道注意力具备多尺度性能&#xff0c;多分支深度卷积更好的提取多尺度特征&#xff0c;最后高效结合空间注意力 1&#xff09;作为注意力MSAM使用&am…

迷你洗衣机哪个牌子好又实惠?口碑最好的小型洗衣机

不得不说洗衣机的发明解放了我们的双手&#xff0c;而我们从小到大就有这个意识&#xff0c;贴身衣物不可以和普通的衣服一起丢进去洗衣机一起&#xff0c;而内衣裤上不仅有肉眼看见的污渍还有手上根本无法消灭的细菌&#xff0c;但是有一款专门可以将衣物上的细菌杀除的内衣洗…

基于单片机环境监测温湿度PM2.5系统设计

**单片机设计介绍&#xff0c;基于单片机环境监测温湿度PM2.5系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 设计一个基于单片机环境监测温湿度PM2.5的系统是一个非常有意义的项目。以下是一个基本的介绍&#xff1a; …

GAN:DCGAN-深度卷积生成对抗网络

论文&#xff1a;https://arxiv.org/pdf/1511.06434.pdf 发表&#xff1a;ICLR 2016 一、架构创新 1&#xff1a;全卷积网络&#xff1a;用逐步卷积代替确定性的空间池化函数&#xff08;如maxpooling&#xff09;&#xff0c;使网络学习自己的空间下采样。使用这种方法&#…

RFID资产管理系统全功能详解!高效管理从这里开始!

在现代商业环境中&#xff0c;RFID资产管理系统正成为企业管理不可或缺的先进工具。现代企业管理正处于数字化的浪潮中&#xff0c;而RFID资产管理系统正是这场浪潮中的一颗璀璨明珠。在这篇文章中&#xff0c;我们将全方位解析RFID资产管理系统的功能&#xff0c;助您深入了解…