2023-11-24
Vector底层结构和源码剖析、
基本介绍
1.Victor的定义说明
public class vector<E>
extends AbstractList<E>
implements LIst<E>,RandomAccess,Cloneble,Serializable
2.Victor底层也是个对象数组
3.Victor是线程同步的,即线程安全
4.开发中需要线程同步安全时,考虑使用Victor
Victor和ArrayList的比较
LinkedList底层结构
基本介绍
- LinkedList底层实现了双向链表和双端队列的特点
- 可以添加任何元素(包括null)
- 线程不安全,没有实现同步
LinkedList的底层操作机制
- LinkedList底层维护了一个双向链表
- LinkedList维护了两个属性first和last反别指向首节点和尾节点
- 每个节点,里面又维护了prev,next,item三个属性,其中prev指向前一个接节点,next指向后一个节点,最终实现双向链表
- 所以LinkedList的元素的添加和删除,不是通过数组完成,所以效率高
遍历方法
由于LinkedList是实现了List接口,遍历方法和List相同
- 迭代器
- 增强for
- 普通for
LinkedList和ArrayList的比较
如何选择ArrayList和LinkedList
- 改查操作多选择ArrayList
- 增删操作多选择LinkedList
- 一般来说,大部分情况都是选择ArrayList
- 要根据业务灵活选择
- 都是线程不安全的,建议单线程的情况下使用
Set接口和常用方法
基本介绍
- 无序(取出和添加顺序不同),没有索引
- 不允许重复元素
常用方法
Set接口是Collection的子接口,因此,常用方法和Collection接口一样
遍历方式
- 迭代器
- 增强for
- 不能使用索引的方式来获取
HashSet底层机制
HashSet底层是HashMap,HashMap底层是(数组+链表+红黑树)
HashSet添加元素时底层实现
HashSet的扩容和转换红黑树机制
LinkedHashSet全面介绍
- LinkedHashSet是HashSet的子类
- LinkedHashSet底层是了一个LinkedHashMap,底层维护的是一个数组+双向链表
- LinkedHashSet根据元素的HashCode值来决定元素的存储位置
- LinkedHashSet使用链表维护元素的次序,这使元素看起来是根据插入顺序保存的
标签:11,24,LinkedHashSet,LinkedList,ArrayList,链表,线程,2023,底层 From: https://www.cnblogs.com/lzyO-o/p/20231124-z194suf.html