2023-11-24

发布时间 2023-11-24 21:47:22作者: 神烦狗~

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的比较

​image​

LinkedList底层结构

基本介绍

  1. LinkedList底层实现了双向链表和双端队列的特点
  2. 可以添加任何元素(包括null)
  3. 线程不安全,没有实现同步

LinkedList的底层操作机制

  1. LinkedList底层维护了一个双向链表
  2. LinkedList维护了两个属性first和last反别指向首节点和尾节点
  3. 每个节点,里面又维护了prev,next,item三个属性,其中prev指向前一个接节点,next指向后一个节点,最终实现双向链表
  4. 所以LinkedList的元素的添加和删除,不是通过数组完成,所以效率高

遍历方法

由于LinkedList是实现了List接口,遍历方法和List相同

  1. 迭代器
  2. 增强for
  3. 普通for

LinkedList和ArrayList的比较

​image​

如何选择ArrayList和LinkedList

  1. 改查操作多选择ArrayList
  2. 增删操作多选择LinkedList
  3. 一般来说,大部分情况都是选择ArrayList
  4. 要根据业务灵活选择
  5. 都是线程不安全的,建议单线程的情况下使用

Set接口和常用方法

基本介绍

  1. 无序(取出和添加顺序不同),没有索引
  2. 不允许重复元素

常用方法

Set接口是Collection的子接口,因此,常用方法和Collection接口一样

遍历方式

  1. 迭代器
  2. 增强for
  3. 不能使用索引的方式来获取

HashSet底层机制

HashSet底层是HashMap,HashMap底层是(数组+链表+红黑树)

HashSet添加元素时底层实现

​image​

HashSet的扩容和转换红黑树机制

​image​

LinkedHashSet全面介绍

  1. LinkedHashSet是HashSet的子类
  2. LinkedHashSet底层是了一个LinkedHashMap,底层维护的是一个数组+双向链表
  3. LinkedHashSet根据元素的HashCode值来决定元素的存储位置
  4. LinkedHashSet使用链表维护元素的次序,这使元素看起来是根据插入顺序保存的

​image​

‍