java.util.Collection 接口介绍
java.util.Collection 是 Java 集合框架(Java Collections Framework, JCF)的根接口 ,定义了所有集合类(如 List、Set、Queue)的基本操作。它代表一组对象(元素),并提供了一系列方法来操作这些元素。
1. Collection 的主要特点
- 存储一组对象 (可以是任意类型,但通常使用泛型
<E>指定元素类型)。 - 不直接实现 ,而是由子接口(如
List、Set、Queue)和具体类(如ArrayList、HashSet、LinkedList)实现。 - 允许重复元素 (但
Set子接口不允许)。 - 可以包含
null元素 (但某些实现类如TreeSet不允许)。 - 不保证顺序 (
List有序,Set无序,Queue按特定规则排序)。
2. Collection 的子接口
| 子接口 | 特点 | 主要实现类 |
|---|---|---|
List |
有序、可重复 | ArrayList, LinkedList, Vector |
Set |
无序、不可重复 | HashSet, LinkedHashSet, TreeSet |
Queue |
队列(FIFO)或优先队列 | LinkedList, PriorityQueue, ArrayDeque |
Deque (Queue 的子接口) |
双端队列 | ArrayDeque, LinkedList |
3. Collection 的常用方法
(1) 基本操作
| 方法 | 说明 |
|---|---|
boolean add(E e) |
添加元素(成功返回 true,失败返回 false) |
boolean remove(Object o) |
删除元素(成功返回 true,否则 false) |
boolean contains(Object o) |
检查是否包含某个元素 |
int size() |
返回元素个数 |
boolean isEmpty() |
判断集合是否为空 |
void clear() |
清空集合 |
(2) 批量操作
| 方法 | 说明 |
|---|---|
boolean addAll(Collection<? extends E> c) |
添加另一个集合的所有元素(并集) |
boolean removeAll(Collection<?> c) |
删除另一个集合的所有元素(差集) |
boolean retainAll(Collection<?> c) |
仅保留另一个集合中也存在的元素(交集) |
boolean containsAll(Collection<?> c) |
检查是否包含另一个集合的所有元素 |
(3) 遍历操作
| 方法 | 说明 |
|---|---|
Iterator<E> iterator() |
返回迭代器,用于遍历集合 |
Object[] toArray() |
将集合转为数组 |
<T> T[] toArray(T[] a) |
将集合转为指定类型的数组 |
4. Collection 的使用示例
(1) 基本操作示例
java
Collection<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
System.out.println(names.contains("Bob")); // true
System.out.println(names.size()); // 3
names.remove("Alice");
System.out.println(names); // [Bob, Charlie]
(2) 遍历集合
java
// 方式1:for-each 循环
for (String name : names) {
System.out.println(name);
}
// 方式2:迭代器 Iterator
Iterator<String> it = names.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
// 方式3:Java 8+ Stream API
names.stream().forEach(System.out::println);
(3) 集合运算(并集、交集、差集)
java
Collection<String> set1 = new HashSet<>(Arrays.asList("A", "B", "C"));
Collection<String> set2 = new HashSet<>(Arrays.asList("B", "C", "D"));
set1.addAll(set2); // 并集: A, B, C, D
set1.retainAll(set2); // 交集: B, C
set1.removeAll(set2); // 差集: A
5. 注意事项
Collection不是线程安全的 ,多线程环境下应使用:Collections.synchronizedCollection()包装CopyOnWriteArrayList(适用于读多写少的场景)ConcurrentHashMap的keySet()或ConcurrentLinkedQueue
Collection不能存储基本类型 (如int、double),必须使用包装类(如Integer、Double)。Arrays.asList()返回的是固定大小的List,不能add()或remove()。
6. 总结
Collection是 Java 集合框架的根接口,定义了基本的集合操作。- 主要子接口 :
List(有序可重复)、Set(无序不重复)、Queue(队列)。 - 常用实现类 :
ArrayList、HashSet、LinkedList、PriorityQueue。 - 核心方法 :
add()、remove()、contains()、size()、iterator()。 - 集合运算 :
addAll()(并集)、retainAll()(交集)、removeAll()(差集)。