维度 | Collection | Collections |
---|---|---|
定义 | 集合类的上级接口 | 集合类的帮助类 |
类型 | 接口 | 类 |
实例化 | 不能直接实例化,通过子接口实现 | 不能实例化,工具类 |
主要功能 | 定义集合的基本操作 | 提供集合操作的静态方法 |
子接口/类 | Set, List, LinkedList, ArrayList, Vector, Stack等 | 无子接口/类,直接提供服务 |
线程安全性 | 不涉及具体实现,由子接口/类决定 | 提供线程安全化方法(如synchronizedList等) |
示例
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CollectionVsCollections {
public static void main(String[] args) {
// 使用Collection的子接口ArrayList创建一个集合
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
// 打印原始列表
System.out.println("Original List: " + list);
// 使用Collections的静态方法对列表进行排序
Collections.sort(list);
System.out.println("Sorted List: " + list);
// 使用Collections的静态方法查找列表中的最大值
String max = Collections.max(list);
System.out.println("Max Element: " + max);
// 使用Collections的静态方法将列表线程安全化
List<String> synchronizedList = Collections.synchronizedList(list);
// 注意:此时synchronizedList是一个线程安全的List,但操作时仍需注意同步块的使用
// 尝试使用Collections的其他方法,如shuffle打乱顺序(此处不展示)
}
}
解析
-
定义与类型:
Collection
是Java集合框架中的上级接口,定义了集合类应具备的基本操作,如添加、删除、遍历等。Collections
则是一个帮助类,提供了一系列静态方法,用于简化对集合的操作,如排序、搜索、线程安全化等。
-
实例化:
Collection
是一个接口,不能直接实例化,通常通过其子接口(如List
,Set
)的实现类来创建集合对象。Collections
是一个工具类,不能实例化,其方法都是静态的,可以直接调用。
-
主要功能:
Collection
接口定义了集合的基本操作规范,如add()
,remove()
,contains()
,size()
等。Collections
类则提供了丰富的静态方法,如sort()
,search()
,max()
,min()
,reverse()
,synchronizedList()
,synchronizedMap()
等,用于实现对集合的各种高级操作。
-
子接口/类:
Collection
有多个子接口,如List
,Set
,LinkedList
,ArrayList
,Vector
,Stack
等,这些子接口及其实现类构成了Java集合框架的核心。Collections
没有子接口/类,它直接提供服务,不需要通过继承或实现来扩展功能。
-
线程安全性:
Collection
接口本身不涉及线程安全性的实现,其线程安全性由具体的实现类(如Vector
,Hashtable
)或通过使用Collections
提供的线程安全化方法来实现。Collections
提供了将集合线程安全化的方法,如synchronizedList()
,synchronizedMap()
,synchronizedSet()
等,这些方法返回的是线程安全的集合对象。但需要注意的是,即使使用了这些方法,仍然需要在必要时使用同步块来确保线程安全。