java 中Collection 和 Collections 有什么区别?

Collection是集合根接口,定义添加、删除等基本操作;2. Collections是工具类,提供排序、同步等静态方法;3. List继承Collection,通过Collections.sort()等方法实现功能增强,二者包名相同但用途不同。

CollectionCollections 是 Java 中两个容易混淆但完全不同的概念。它们的作用、定义和使用场景都有显著区别。

1. Collection 是接口,Collections 是工具类

Collection 是一个位于 java.util 包中的接口,它是集合体系的根接口之一。List、Set、Queue 等接口都继承自 Collection,它定义了集合的基本操作,比如添加、删除、遍历元素等。

常见方法包括:

  • boolean add(E e)
  • boolean remove(Object o)
  • int size()
  • boolean isEmpty()
  • Iterator iterator()

而 Collections 是一个工具类,同样在 java.util 包中,提供了一系列静态方法来操作或辅助 Collection 类型的对象,比如排序、查找、同步集合等。

2. Collections 提供集合的实用方法

这个类不用于存储数据,而是为集合提供增强功能。例如:

  • Collections.sort(list):对列表进行排序
  • Collections.reverse(list):反转列表元素顺序
  • Collections.max(collection):获取集合中的最大值
  • Collections.synchronizedList(list):将普通 List 转为线程安全的 List
  • Collections.unmodifiableList(list):返回只读视图

3. 使用示例对比

假设有一个 ArrayList:

List list = new ArrayList<>();
list.add("apple");
list.add("banana");

// 使用 Collection 的方法(由 List 继承)
list.size();
list.isEmpty();

// 使用 Collections 工具类的方法
Collections.sort(list);           // 排序
Collections.reverse(list);        // 反转
String max = Collections.max(list); // 获取最大值

可以看到,Collection 是“能做什么”的规范,而 Collections 是“帮你做得更好”的工具箱。

基本上就这些。记住:接口首字母小写 c 是 Collection,工具类全大写开头的是 Collections,别搞混就行。