Collection 与 Collections 的区别
Collection和Collections是 Java 中与集合操作相关的两个核心概念,前者是 “集合接口”,后者是 “集合工具类”,具体区别如下:
# 1. 核心定义与作用
- Collection:
- 类型:Java 集合框架的顶层接口(
java.util.Collection); - 作用:定义所有单列集合(如 List、Set)的通用方法规范(如
add()、remove()、size()、iterator()); - 子类 / 实现类:List(ArrayList、LinkedList)、Set(HashSet、TreeSet)等;
- 特点:不能直接实例化,需通过实现类使用。
- 类型:Java 集合框架的顶层接口(
- Collections:
- 类型:Java 集合的工具类(
java.util.Collections); - 作用:提供静态工具方法,用于操作 Collection 及其子类(如排序、查找、同步化、空集合创建);
- 核心方法:
sort()(排序)、binarySearch()(二分查找)、synchronizedList()(创建同步集合)、emptyList()(创建空集合); - 特点:类被
final修饰(不能继承),所有方法都是静态方法(无需实例化,直接通过类名调用)。
- 类型:Java 集合的工具类(
# 2. 示例
java
运行
// 1. Collection:作为接口,使用其实现类ArrayList
Collection<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
System.out.println(list.size()); // 2
// 2. Collections:作为工具类,调用静态方法
// 排序
Collections.sort((List<String>) list);
System.out.println(list); // [apple, banana]
// 二分查找
int index = Collections.binarySearch((List<String>) list, "banana");
System.out.println(index); // 1
// 创建同步集合(线程安全)
Collection<String> syncList = Collections.synchronizedCollection(list);
// 创建空集合(不可修改)
Collection<String> emptyList = Collections.emptyList();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 3. 关键区别
| 对比维度 | Collection | Collections |
|---|---|---|
| 类型 | 接口 | 工具类(final 修饰,不能继承) |
| 实例化 | 不能直接实例化,需通过实现类(如 ArrayList) | 不能实例化(所有方法静态),直接类名调用 |
| 核心作用 | 定义单列集合的通用方法规范 | 提供集合操作的静态工具方法(排序、查找等) |
| 方法特性 | 抽象方法(需实现类实现) | 静态方法(直接调用) |
| 关联类 | 子类:List、Set;实现类:ArrayList、HashSet 等 | 无子类,依赖 Collection 及其子类作为参数 |
#
上次更新: 12/30/2025