简介:
java常用集合类包括LinkedList、ArrayList、Stack、Queue、HashMap、LinkedHashSet、TreeSet、HashSet、ConcurrentHashMap等。
其中线程安全的容器由Vector、Stack、HashTable、Enumeration(速记法V,SHE),这些是过去遗留下来的类,新程序中不建议使用。
在IDEA(专业版)中可查看集合类的继承关系,找到指定的实现类文件:右键- > diagram->show diagram即可查看。例如ArrayList和LinkedList的继承关系如图1所示,其他继承关系自行查看。
- List
- LinkedList底层数据结构为链表,插入方便,查找性能差。
- ArrayList底层是可变数组,插入不方便、查找方便。
- Queue
- LinkedList 先进先出。
- PriorityQueue 底层数据结构是堆,需实现Comparable接口。
Stack
- Stack 底层数据结构基于链表,先进后出。
Set
- HashSet 插入顺序与存储顺序无关,需实现equals和HashCode方法。
- LinkedHashSet 插入顺序与存储顺序相同,需实现equals和HashCode方法。
- TreeSet 底层数据结构是树,插入时按照升序排序。需实现equals和Comparable方法。
- Map
- HashMap 插入顺序与存储顺序无关,底层数据结构是哈希表。
- LinkedHashMap 插入顺序与存储顺序相同。底层数据结构是哈希表。
- TreeMap 底层数据结构是红黑树,顺序有Comparator决定,存储结果是有序的。
- WeakHashMap 与HashMap相似,不同在于允许垃圾回收器回收键值对(没有被其他地方引用的键)。
- ConcurrentHashMap 多线程版本的哈希表,支持并发访问。
各容器的常用方法有:
插入 | 取出 | 取出并删除 | |
---|---|---|---|
Stack | push | peek | pop |
Queue | offer | peek | poll |
Map | put(K, V) | get(K) | / |