JAVA 集合【学习笔记】【待补充】

一、集合框架体系图

二、各集合特点概述

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

猜你喜欢

转载自blog.csdn.net/Zhousan0125/article/details/130609388