一、集合框架体系图
二、各集合特点概述
Interface Collection<E> 【单列集合】
【集合层次结构中单列集合的根界面 集合表示一组被称为其元素的对象】
【单列】Interface List<E>
【有序集合、允许元素重复、允许多个元素为 NULL、可控制元素插入位置,通过索引访问元素】
Class ArrayList<E>
【可控大小数组结构,默认初始容量是10。查询速度快,插入删除数据效率降低。线程不安全】
【可控大小数组:集合中的元素的数目大于目前集合数组的长度时,扩容50%】
Class LinkedList<E>
【双向链表结构;分配内存空间不必连续;插入、删除效率高;两端查询效率高,中间效率低】
Class Vector<E>
【可控大小数组结构,默认初始容量是10。查询速度快,插入删除数据效率降低。线程安全】
【可控大小数组:集合中的元素的数目大于目前集合数组的长度时,扩容100%】
【由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好】
【单列】Interface Set<E>
【无序集合、不允许元素重复、允许单个元素为 NULL】
Class HashSet<E>
【底层基于HashMap实现,底层数据结构是哈希表,允许单个值为 NULL,默认初始容量是16】
Class LinkedHashSet<E>
【底层基于LinkHashMap实现,底层数据结构是哈希表+链表,保证遍历和插入顺序一致】
Class TreeSet<E>
【底层基于TreeMap实现,底层数据结构是红黑树,值不可以为 NULL,默认自然排序】
【存储元素对应的类型须实现Comparable接口,只要不是自定义类型,基本上都实现了该接口】
Interface Map<K,V> 【散列集合】【Key键 —— Value值】
【将键映射到值,键不可重复】
Class HashMap<K,V>
【底层结构基于hash表( 数组+链表 )实现,key和value都可为 NULL,非线程安全】
Class LinkedHashMap<K,V>
【底层结构基于hash表+双向链表实现,保证(键)插入和访问顺序一致】
Class TreeMap<K,V>
【底层结构基于红黑树实现,key不能为 NULL,value可为 NULL,对健自然排序】
【红黑树:又称红黑二叉树】
Class HashTable<K,V>
【底层结构是hash表( 数组+链表 )实现,key和value都不能为 NULL,线程安全】【synchronized
悲观锁】
Class ConcurrentHashMap<K,V>
【底层结构基于hash表( 数组+链表 )实现,JDK1.5之后替代HashTable】
【JDK1.8之前,分段锁,对整个桶数组进行了分割分段(Segment
)】
【JDK1.8之后,synchronized
和 CAS】