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