整体架构

Java的集合类由两个接口派生:Collection 、Map

Collection派生出3个接口:Set、Queue、List

Map派生出Hashtable、HashMap、LinkedHashMap、TreeMap

【Java】集合基础

 
 

Collection 体系

 

HashSet:Set接口的典型实现

HashSet的特点:1.元素顺序不能保证;2.不同步;3.集合元素可为null

HashSet添加元素:根据hashCode确定在HashSet中存储位置


LinkedHashSet:HashSet的子类

LinkedHashSet的特点:1.增加链表维护元素顺序;2.插入慢,查询快


TreeSet:Set的实现接口Sorted接口的实现类

TreeSet的特点:1.可以定制排序;2.采用红黑树的结构存储元素


ArrayList:List类的典型实现

ArrayList的特点:1.线程不安全;2.性能高于Vector


Queue的特点:先进先出

PriorityQueue的特点:1.队列的顺序按照元素的大小排序;2.可以定制排序

Deque的特点:双端队列

ArrayDeque:1.数组双端队列;2.可以作为栈和队列


LinkedList:List和Deque的共同实现

LinkedList的特点:1.功能强大;2.查询慢插入快


 

Map 体系

 

HashMap & Hashtable :派生于AbstractMap

Hashtable的特点:1.线程安全;2.性能低;3.不允许null作为key和value

HashMap的特点:1.线程不安全;2.性能高;3.允许null作为key和value


LinkedHashMap:实现于HashMap

LinkedHashMap的特点:1.双向链表维护元素顺序;2.迭代快插入慢


TreeMap:实现于SortedMap

TreeMap的特点:1.定制排序;2.红黑树数据结构


WeekHashMap:1.实现于HashMap;2.value没有强引用后可能被垃圾回收

IdentityHashMap:要求key严格相等才算相等



HashSet 和 HashMap 性能问题

1.hash冲突后,冲突的元素在对应位置上以链表形式存储

2.负载极限默认为0.75,超过后进行rehashing

3.轻负载适合插入查询,但是迭代慢

4.尽可能开始根据实际设置初始化容量,减少rehashing

相关文章: