常见的集合类型有哪些?
参考回答
Java 中常见的集合类型主要分为两大接口:Collection
和 Map
。
Collection
下的主要实现包括:List
:有序、可重复,如ArrayList
、LinkedList
。Set
:无序、不可重复,如HashSet
、TreeSet
。Queue
:用于队列操作,如LinkedList
、PriorityQueue
。
Map
是另一种集合接口,用于存储键值对:- 如
HashMap
、TreeMap
、LinkedHashMap
。
- 如
详细讲解与拓展
1. Collection 接口
List
- 特点:元素有序,可以通过索引访问,允许重复元素。
-
常见实现类:
-
ArrayList
:底层是动态数组,查询快,但插入和删除慢。 -
LinkedList
:底层是双向链表,插入和删除快,但查询慢。 -
例子:
List<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("A"); // 允许重复 System.out.println(list); // 输出:[A, B, A]
-
Set
- 特点:元素无序,不允许重复。
-
常见实现类:
-
HashSet
:基于哈希表,插入、删除、查询速度快,但无序。 TreeSet
:基于红黑树,元素自动排序,速度相对较慢。-
LinkedHashSet
:基于哈希表和链表,保证插入顺序。 -
例子:
Set<String> set = new HashSet<>(); set.add("A"); set.add("B"); set.add("A"); // 重复元素被忽略 System.out.println(set); // 输出:[A, B](无序)
-
Queue
- 特点:先进先出(FIFO),主要用于排队场景。
-
常见实现类:
-
PriorityQueue
:元素按照优先级排序。 -
LinkedList
:作为队列使用时,遵循 FIFO 规则。 -
例子:
Queue<Integer> queue = new LinkedList<>(); queue.add(1); queue.add(2); queue.poll(); // 移除第一个元素 System.out.println(queue); // 输出:[2]
2. Map 接口
-
特点:用于存储键值对(key-value),键不能重复,值可以重复。
-
常见实现类:
HashMap
:基于哈希表,键值对无序。TreeMap
:基于红黑树,键值对按键自动排序。LinkedHashMap
:基于哈希表和链表,保证插入顺序。
- 例子:
Map<Integer, String> map = new HashMap<>(); map.put(1, "A"); map.put(2, "B"); map.put(1, "C"); // 覆盖键为1的值 System.out.println(map); // 输出:{1=C, 2=B}
3. 集合体系结构图
为了更好理解,可以参考以下简单的结构:
Collection
|-- List
| |-- ArrayList
| |-- LinkedList
|-- Set
| |-- HashSet
| |-- TreeSet
|-- Queue
|-- LinkedList
|-- PriorityQueue
Map
|-- HashMap
|-- TreeMap
|-- LinkedHashMap
4. 拓展:集合的选择
- 如果需要快速查询:使用
HashSet
或HashMap
。 - 如果需要排序:使用
TreeSet
或TreeMap
。 - 如果需要保证插入顺序:使用
LinkedHashSet
或LinkedHashMap
。 - 如果需要动态大小的数组:使用
ArrayList
。 - 如果需要频繁插入删除:使用
LinkedList
。