Map小记

Map

  • key-value存储容器

HashMap

  • Hash表实现的Map
  • 允许key和value为null

LinkedHashMap

  • Hash表实现,同时保存了插入或者访问顺序

SortedMap

  • 有序Map,key会排序
  • 可导航的map,由于是有序的,因此可以实现获取某个key排序前的所有key等类似操作

TreeMap

  • 使用红黑树实现的Map

HashTable

  • 线程安全的Hash表实现Map,使用this锁,内部优化很少

ConcurrentMap

  • 并发安全的Map

ConcurrentHashMap

  • 并发安全的hash表实现的Map
  • 使用cas和hash槽synchronized保证线程安全

ConcurrentLinkedHashMap❌

  • 不存在,因为保持全局顺序必须map级别的锁

ConcurrentNavigableMap

  • 并发可导航map,有序map

ConcurrentTreeMap❌

  • 不存在,TreeMap是红黑树实现的,只有一个根节点,要实现并发必须加map级别的锁

ConcurrentSkipListMap

  • 并发跳表实现Map,有序,通过cas实现无锁

不管key和value能不能为null,也懒得去记,最好都把null包装成null对象,这样所有的map都能一致对外服务

原文地址:https://www.cnblogs.com/zby9527/p/13633010.html