当前位置:首页 > 服务端 > List集合详解

List集合详解

2022年11月08日 20:15:30服务端10

一:集合体系图

List集合详解 _ JavaClub全栈架构师技术笔记

二:LIst集合

按顺序存放元素,元素可以重复(可以存放null值)
实现类:
ArrayList:数组实现,查询快,增删慢,轻量级;(线程不安全)
LinkedList:双向链表实现,增删快,查询慢 (线程不安全)
Vector:数组实现,重量级 (线程安全、使用少)

三:List集合的基本操作

  int size()//返回集合的长度
  boolean isEmpty();//集合是否为空
  boolean contains(Object o);//如果此列表包含指定的元素,则返回 true。
  boolean add(E e);//增加元素
  boolean remove(Object o);//删除元素
  E get(int index);//获得指定位置上的元素
  int indexOf(Object o);//返回此列表中指定元素最后一次出现的索引,如果此列表不包含该元素,则返回 -1
  Iterator<E> iterator()//返回一个迭代器  

四:List集合的实现类

1.ArrayList:底层采用Object数组实现,查询速度快,增删速度慢的特点。
2.实现了四个接口
①:List接口:得到了List接口框架基础功能。
②:RandomAccess接口,获得了快速随机访问存储元素的功能,
③:Cloneable,得到了clone()方法,可以实现克隆功能;
④:Serializable,表示可以被序列化,通过序列化去传输,典型的应用就是hessian协议。
List集合详解 _ JavaClub全栈架构师技术笔记

3.ArrayList集合自动扩容机制
无参构造器创建出的ArrayList的初始容量为10
List集合详解 _ JavaClub全栈架构师技术笔记

①:确保内部容量,看如果需要扩容,则扩容。
List集合详解 _ JavaClub全栈架构师技术笔记
②:如果数组的长度小于需要的最小容量就扩容
List集合详解 _ JavaClub全栈架构师技术笔记
③:扩容
可以看到扩容的是1.5倍
这里增加了对元素个数的最大个数判断,MAX_ARRAY_SIZE 为int最大值减去8
List集合详解 _ JavaClub全栈架构师技术笔记2.LinkedList集合
①:LinkedList底层通过链表来实现,随着元素的增加不断向链表的后端增加节点。LinkedList是一个双向链表,每一个节点都拥有指向前后节点的引用。相比于ArrayList来说,LinkedList的随机访问效率更低。
②:继承了AbstractSequentialList,实现了List, Deque, Cloneable, Serializable接口。
③:在LinkedList中,内部类Node对象最为重要,它组成了LinkedList集合的整个链表,分别指向上一个点、下一个结点,存储着集合中的元素。成员变量中,first表明是头结点,last表明是尾结点
List集合详解 _ JavaClub全栈架构师技术笔记
④:add增加操作
可以简单概括为以下几点。
1,将添加的元素转换为LinkedList的Node对象节点。

2,增加该Node节点的前后引用,即该Node节点的prev、next属性,让其分别指向哪一个节点)。

3,修改该Node节点的前后Node节点中pre/next属性,使其指向该节点。
List集合详解 _ JavaClub全栈架构师技术笔记

⑤:remove操作

List集合详解 _ JavaClub全栈架构师技术笔记
3.Vector集合
Vector是线程安全的,所以速度慢,已经被ArryList所取代。
五:ArrayLsit集合和LinkedLIst集合的区别

作者:睡大觉xx
来源链接:https://blog.csdn.net/qq_51751452/article/details/121454170

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/68569.html

标签: List
分享给朋友:

“List集合详解” 的相关文章

java ArrayList 转 string、string 转 ArrayList

string 转 ArrayList 先将字符串按照某个字符切割,转为string数组 然后用Arrays的asList方法,将数组转为List public class test1 { public static void m...

Java 将List<String> 转为以逗号 ‘,’ 拼接的字符串

Java 将List<String> 转为以逗号 ‘,’ 拼接的字符串

代码:  public static void main(String[] args) { List<String> mobileList=new ArrayList<>(); mobileList....

java 集合hashmap hashset arraylist 详解以及常见面试题

java 集合hashmap hashset arraylist 详解以及常见面试题

   今天复习了一下自认为java 中很重要的一部分集合,这篇文章主要从底层源码进行分析这几种集合的区别与联系,他们的用法不多讲,用法不难;大多数东西我也是从各位大神的博客上或者书上扒下来的,小菜鸟在复习,写下来主要是一:是为了想留下点东西 二:我发现在写的过程中我...

java中String数组和List的互相转化

目的:在java中,实现String数据转List,List转String数组 1.List转String数组 方法一:     //先准备一个List List<String> testList=...

python面试题,求两个List各个元素相减绝对值最小是多少

春暖花开,人心浮动,吾思当左迁之,一则工资上涨,二则环境变好。奈何世道不然,吹牛空谈者大受欢迎,而吾实事求是者则落寞如此,知之为知之,不知为不知。 投递无数,才得一二,某国有电信公司邀请面试,始记得吾曾于去年三月去过,现复一年又至三月,碰运气吧! 约至午后两点...

java list 换位置

package com.crystal.didemo.interfaces; import java.util.Collections; import java.util.List; /** * 集合工具类 * 向前移动问题:把第...

string转为list java

string转为list java

import java.util.Arrays; import java.util.List; public class test { public static void main(String[] args) {...

java BigDecimal List求和

BigDecimal totalPrice=list.stream().map(DictRegisterClassVsChargeVO::getPriceFirst).reduce(BigDecimal.ZERO, BigDecimal::add);...

java集合(List集合与Map集合的数据转换)

List集合与Map集合的数据转换     实现List和Map数据的转换。     具体要求如下:     功能1:定义方法public void listToMap( ){ }将List中Student元素封装到Map中         1)使用构造方法St...

Java集合 -- ArrayList集合及应用

Java集合 -- ArrayList集合及应用

JAVA集合 对象数组 集合类之ArrayList 学生管理系统 斗地主案例 NO.one 对象数组 1.1 对象数组描述 A:基本类型的数组:存储的元素为基本类型     int[]...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。