List
- ArrayList
底层实现:数组
扩容:每次扩容原来的1.5倍,通过Arrays.copyof方法扩容
特点:线程不安全,查询块 - LinkedList
底层实现:双向链表
扩容:不需要扩容
特点:线程不安全,增删块 - Vector
底层实现:数组
扩容:每次扩容原来的2倍
特点:线程不安全
Set
- HashSet
底层是由HashMap维护的,value为一个空的Object对象 - TreeSet
底层是由NavigableMap一样,value为一个空的Object对象
Map
- HashMap
底层实现:哈希表(数组+链表)
存储逻辑:计算key的hash值,根据hash值找到对应的位桶,通过equals方法对链表中的key值进行比较,如果有相等的值就覆盖value,没有相等的值则进行存储 - TreeMap
底层实现:红黑树
特点:自动根据key做升序排序 - ConcurrentHashMap
特点:线程安全