# java容器
## 容器
### collection:
**Set**: Treeset(红黑树实现,支持有序性操作)、Hashset(hash表实现,支持快速查找)、Linkedhashset(具有hash表的查找效率,并用双向链表来维护元素的插入删除)
**List**:ArrayList、Vector、LinkedList
**Queue**:LinkedList、PriorityQueue
> **ArrayList和LinkedList的区别** :ArrayList是由动态数组实现,支持随机访问;LinkedList是由双向链表实现,支持顺序访问。但是可以快速在链表中插入与删除,还可以用作栈、队列、双向队列。
### map:
**TreeMap**: 基于红黑树
**HashMap**:基于hash表
**HashTable** : 和 HashMap 类似,但它是线程安全的,这意味着同一时刻多个线程同时写入 HashTable 不会导致数据不一致。它是遗留类,不应该去使用它,而是使用 ConcurrentHashMap 来支持线程安全,ConcurrentHashMap 的效率会更高,因为 ConcurrentHashMap 引入了分段锁。
**LinkedHashMap**: 使用双向链表来维护元素的顺序,顺序为元素的插入顺序或者最近最少使用顺序(LRU)。
## 源码分析
### ArrayList
### LinkedList
### HashMap
## 参考文献
[cs-note-java容器](http://www.cyc2018.xyz/Java/Java%20%E5%AE%B9%E5%99%A8.html#weakhashmap)
原文:https://www.cnblogs.com/beiyouycy/p/14607740.html