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 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 基于API的类的学习day04——List -> 正文阅读

[数据结构与算法]基于API的类的学习day04——List

基于API的类的学习day04——List

List(I):

1)特点:
?a.List是有顺序的接口,所以是有序列表,并且可以使用index定位
?b.List允许有重复值
?c.List中允许有null

2)常用API(只要带有index,都是List新增的方法):
?void add(int index, E element)
?boolean addAll(int index, Collection<? extends E> c)
?E get(int index)
?int lastIndexOf(Object o)
?E remove(int index)
?E set(int index, E element)
?List subList(int fromIndex, int toIndex) - 截取子集合

3)常见实现类:
?(1)ArrayList( C ):
?a.底层数据结构:顺序结构
?b.底层实现:数组
?c.特点:
??①.按照顺序排列,每个元素都带有标号
??②.除了有标号是连续的,内存中的物理空间也是连续的
?d.优缺点:
??优点: 查询速度快(因为有连续的下标,可以根据下标进行查询)
??缺点:
???a.插入/删除速度慢(插入/删除都是要移动元素的,所以元素一多就会执行效率慢)
???b.内存的物理空间是连续的,利用不到碎片空间

Vector( C )

?a.底层数据结构:顺序结构
?b.底层实现:数组
?c.特点:
??①.全部和ArrayList一样
??②.Vector上带有线程同步锁(synchronized),所以是线程安全的,效率低
?d.优缺点:全部和ArrayList一样

LinkedList( C )

?a.底层数据结构:链式结构
?b.底层实现:Node节点(data[数据] + next[下一个节点的引用])
?c.特点:
??①.LinkedList是双向链表
??①.链表是内存中固定顺序,但是他的物理空间不连续
??②.没有下标
??③.所有节点的访问,都必须通过头节点(next)/尾节点(pre)
??④.head(头节点): 只存next,不存data
???last(尾节点): 只存pre,不存data
??⑤.head.next = null -> 空链表
???last.pre = null -> 空链表

?d.优缺点:
??优点:
???a.插入/删除效率高
???b.不需要连续的内存物理空间,所以空间利用率高
??缺点:
???查询效率低,只能从头节点出发开始查询

?e.LinkedList独有的API:
?(只要带有First/last的方法)
?void addFirst(E e)
?void addLast(E e)
?E getFirst()
?E getLast()
?E remove(int index)
?E removeFirst()
?E removeLast()

常见面试题:

?A.ArrayList 和 LinkedList的区别
??a.数据结构
??b.ArrayList -> 增删慢,查询快
??LinkedList -> 增删快,查询慢

?总结:
?在使用List集合时,会选择ArrayList,在综所有条件之后,ArrayList插入和查询的效率高于LinkedList.

?B.ArrayList 和 Vector的区别
??a.线程安全
??ArrayList不带锁,线程不安全,效率高
??Vector带锁,线程安全,效率低
??b.扩容问题
??ArrayList扩容为原容量的1.5倍
??Vector扩容为原容量的2倍

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

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/8 6:23:57-

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