IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> List集合详解 -> 正文阅读

[数据结构与算法]List集合详解

一:集合体系图

在这里插入图片描述

二: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协议。
在这里插入图片描述

3.ArrayList集合自动扩容机制
无参构造器创建出的ArrayList的初始容量为10
在这里插入图片描述

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

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

3,修改该Node节点的前后Node节点中pre/next属性,使其指向该节点。
在这里插入图片描述

⑤:remove操作

在这里插入图片描述
3.Vector集合
Vector是线程安全的,所以速度慢,已经被ArryList所取代。
五:ArrayLsit集合和LinkedLIst集合的区别

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-11-22 12:35:49  更:2021-11-22 12:37:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 16:00:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码