在 Java 中,Collection
和 Collections
仅一字之差,但它们有本质区别:
对比维度 | Collection | Collections |
---|---|---|
类型 | 接口(Interface) | 工具类(Utility Class) |
所属包 | java.util.Collection |
java.util.Collections |
作用 | 定义 了 Java 集合框架的 根接口,用于存储一组对象 | 提供 了操作集合(如排序、同步、查找等)的静态方法 |
子接口 | List 、Set 、Queue |
无子接口 |
常用方法 | add() 、remove() 、size() 、contains() 等 |
sort() 、reverse() 、synchronizedList() 、max() 、min() 等 |
示例 | List |
Collections.sort(list); |
Collection
是 Java 集合框架的根接口,其下有三个主要子接口:
List
(如 ArrayList
、LinkedList
)
Set
(如 HashSet
、TreeSet
)
Queue
(如 PriorityQueue
、LinkedList
)
Collection
接口主要用于 存储和管理多个元素。
import java.util.*;
public class CollectionExample {
public static void main(String[] args) {
Collection list = new ArrayList<>(); // List 也是 Collection 的子类
list.add("Java");
list.add("Python");
list.add("C++");
System.out.println("Collection 内容:" + list);
}
}
输出
Collection 内容:[Java, Python, C++]
Collections
是 Java 提供的 工具类,包含了一系列 静态方法,用于操作 Collection
及其子类对象,如:
排序:Collections.sort(list)
查找:Collections.binarySearch(list, "Java")
同步:Collections.synchronizedList(new ArrayList<>())
最值:Collections.max(list)
, Collections.min(list)
import java.util.*;
public class CollectionsExample {
public static void main(String[] args) {
List numbers = new ArrayList<>(Arrays.asList(3, 1, 4, 1, 5, 9));
Collections.sort(numbers); // 排序
System.out.println("排序后的列表:" + numbers);
int max = Collections.max(numbers);
int min = Collections.min(numbers);
System.out.println("最大值:" + max + ",最小值:" + min);
}
}
输出:
排序后的列表:[1, 1, 3, 4, 5, 9]
最大值:9,最小值:1
Collection
是 Java 集合框架的基础,定义了统一的 集合操作 规范。
Collections
只是 提供静态工具方法,不需要创建实例,因此设计为 工具类。
sort(list)
: 排序
reverse(list)
: 反转顺序
max(list), min(list)
: 获取最大/最小值
synchronizedList(new ArrayList<>())
: 获取线程安全的 List
unmodifiableList(list)
: 获取不可修改的 List
Collections.synchronizedList(new ArrayList<>())
返回的集合 使用 synchronized 关键字 进行方法同步,使其变为线程安全集合。
方法 1(Collections.unmodifiableList()
)
List list = new ArrayList<>(Arrays.asList("A", "B", "C"));
List unmodifiableList = Collections.unmodifiableList(list);
unmodifiableList.add("D"); // 运行时会抛出 UnsupportedOperationException
List.of()
)List list = List.of("A", "B", "C"); // 直接创建不可变集合
关键点 | Collection | Collections |
---|---|---|
本质 | 接口 | 工具类 |
作用 | 定义集合框架的根接口 | 提供操作集合的静态工具方法 |
包 | java.util.Collection |
java.util.Collections |
常见方法 | add() 、remove() 、size() |
sort() 、reverse() 、synchronizedList() |
示例 | List |
Collections.sort(list); |
面试技巧:
强调 Collection
是接口,Collections
是工具类,两者作用完全不同。
列举 Collections
的常用方法,尤其是 排序、同步、不可变集合 相关方法。
扩展多线程相关问题,如 Collections.synchronizedList()
的作用。
如果觉得这篇博客对你有帮助,记得点赞 ⭐、收藏 、关注 !