list、map、set

list

list接口实现类如上图

1. ArrayList:基于数组实现的动态数组,支持快速随机访问和增删操作,但在插入和删除元素时需要移动其他元素。

2. LinkedList:基于双向链表实现的列表,支持快速插入和删除元素,但随机访问的性能较差

3. Vector:与 ArrayList 类似,是一个动态数组,但是它是线程安全的,支持同步访问。

4. Stack:栈的实现类,继承自 Vector 类,提供了后进先出(LIFO)的操作

5. CopyOnWriteArrayList:线程安全的列表,通过在修改操作时创建一个新的副本来实现线程安全,适用于读多写少的场景

map

1.HashMap:

最常用的Map,根据键的hashcode值来存储数据,根据键可以直接获得他的值(因为相同的键hashcode值相同,在地址为hashcode值的地方存储的就是值,所以根据键可以直接获得值),具有很快的访问速度,遍历时,取得数据的顺序完全是随机的,HashMap最多只允许一条记录的键为null,允许多条记录的值为null,HashMap不支持线程同步,即任意时刻可以有多个线程同时写HashMap,这样对导致数据不一致,如果需要同步,可以使用synchronziedMap的方法使得HashMap具有同步的能力或者使用concurrentHashMap

2.HashTable:

与HashMap类似,不同的是,它不允许记录的键或值为空,支持线程同步,即任意时刻只能有一个线程写HashTable,因此也导致HashTable在写入时比较慢!

3.LinkedHashMap:

是HahsMap的一个子类,但它保持了记录的插入顺序,遍历时先得到的肯定是先插入的,也可以在构造时带参数,按照应用次数排序,在遍历时会比HahsMap慢,不过有个例外,当HashMap的容量很大,实际数据少时,遍历起来会比LinkedHashMap慢(因为它是链啊),因为HashMap的遍历速度和它容量有关,LinkedHashMap遍历速度只与数据多少有关

4.TreeMap:

实现了sortMap接口,能够把保存的记录按照键排序(默认升序),也可以指定排序比较器,遍历时得到的数据是排过序的,TreeMap底层是红黑树

5.ConcurrentHashMap

ConcurrentHashMap是一个线程安全的HashMap实现。它不仅解决了HashMap在并发情况下的线程安全问题,还提供了高效的并发访问操作。

ConcurrentHashMap的实现基于分段锁(Segment),它将整个HashMap的存储空间分成多个Segment,每个Segment维护了一个独立的Hash表。每个Segment可以被多个线程同时访问,不同的线程可以同时对不同的Segment进行操作,从而实现了并发访问。

ConcurrentHashMap的线程安全是通过一些特殊的算法实现的。例如,在put操作中可以利用volatile修饰的成员变量sizeCtl来控制扩容,并且在扩容时,只需要将某个Segment的大小增加一倍即可,不需要对整个HashMap进行扩容。

ConcurrentHashMap迭代器也是线程安全的。当ConcurrentHashMap进行修改时,迭代器会感知到并抛出ConcurrentModificationException异常。因此,迭代器只能保证遍历到对应时间点的正确数据,不能保证一致性快照。

总的来说,ConcurrentHashMap是一个高效的、线程安全的HashMap实现。除了在多线程环境下保证线程安全和并发性外,它还提供了高并发场景下的高效数据访问能力。

set

1.HashSet

HashSet是set接口的实现类,set下面最主要的实现类就是HashSet(也就是用的最多的),此外还有LinkedHashSet和TreeSet。HashSet是无序的、不可重复的。通过对象的hashCode和equals方法保证对象的唯一性。

2.TreeSet

TreeSet对元素进行排序的方式:元素自身具备比较功能,需要实现Comparable接口,并覆盖compareTo方法。元素自身具备比较功能,需要实现Comparable接口,并覆盖compareTo方法。

3.LinkedHashSet

LinkedHashSet是一种有序的Set集合,即其元素的存入和输出的顺序是相同的。
 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值