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()
(差集)。