Java中常见的容器有哪些?
常用容器可分为Collection和Map,Collection是存储对象的集合,而Map是存储键值对的集合。
其中,Collection又分为List、Set、Queue,而Map的实现类为HashMap、LinkedHashMap、TreeMap、HashTable。
List接口(有序,可重复):
- ArrayList:底层是动态数组,支持随机访问。
- LinkedList:底层是双向链表,只能顺序访问。
Set接口(不可重复):
- HashSet(无序):基于哈希表。支持快速查找,但不支持有序性操作,且不维持插入顺序信息。
- TreeSet(有序):底层是红黑树。支持快速查找(O(logn))但效率比HashSet(O(1))低。支持有序性操作,例如在一定范围内查找元素。
- LinkedHashSet(有序):底层是链表+哈希表。使用哈希表存储元素,再维护一个双向链表保存元素的插入信息。
Queue接口:
- LinkedList:可实现双向队列
- PriorityQueue:基于堆结构的优先队列。
Map接口:
- HashMap:基于哈希表。
- LinkedHashMap:使用双向链表维护插入顺序。
- HashTable:线程安全的HashMap,已淘汰。推荐ConcurrentHashMap。
- TreeMap:基于红黑树。