Java集合框架总结图

  • Collection 接口的接口(对象集合)
  • ├——-List 接口:元素都有索引可以重复有序(迭代器顺序)
  • │—————-├ LinkedList 接口实现类, 双向链表查询慢,增删快,效率高, 没有同步, 线程不安全
  • │—————-├ ArrayList 接口实现类, 数组 查询快,增删慢,效率高,支持随机访问, 没有同步, 线程不安全
  • │—————-└ Vector 接口实现类 数组查询快,增删慢,效率低, 同步, 线程安全
  • │———————-└ Stack 是Vector类的实现类
  • └——-Set 接口: 仅接收一次,不可重复,并做内部排序,存储和取出顺序不一致
  • ├ —————└ TreeSet 底层实现为二叉树,支持自然排序(默认)和定制排序不允许null值
  • ├—————-└ HashSet 使用hash表(数组)存储元素 ,无序,允许null值
  • └————————└ LinkedHashSet元素插入的顺序来维护集合的链接表,允许null值
  • Map 接口 键值对的集合 (双列集合)
  • ├———Hashtable 接口实现类,哈希表(数组+链表),不允许key、value 是null,无序, 同步, 线程安全(全部锁)
  • ├———HashMap  接口实现类,哈希表(数组+链表)允许一个 key 为 null无序,没有同步, 线程不安全
  • │—————–├ LinkedHashMap双向链表哈希表实现 ,key和value都允许为空迭代器顺序,线程不安全
  • │—————–└ WeakHashMap
  • ├ ——–TreeMap 红黑树对所有的key进行排序,value允许为null,key不允许为null红黑树顺序(可自定义),线程不安全
  • ├ ——–ConcurrentHashMap 数组+链表+红黑树,不允许key、value 是null,无序,线程安全(部分锁)
  • └———IdentifyHashMap

——————————————————————————————————————————————

ConcurrentHashMap的应用场景是高并发,但是并不能保证线程安全。
ConcurrentHashMap能够保证每一次调用都是原子操作,但是并不保证多次调用之间也是原子操作。

ConcurrentHashMap是使用了锁分段技术技术来保证线程安全的。
锁分段技术:首先将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问。

 

posted @ 2022-03-23 16:04  zhαojh  阅读(88)  评论(0编辑  收藏  举报