Java 集合类学习 通用接口
什么是集合框架
参考资料 Java 集合框架
早在 Java 2 中之前,Java 就提供了特设类。比如:Dictionary、Vector、Stack 和 Properties 这些类用来存储和操作对象组。
虽然这些类都非常有用,但是它们缺少一个核心的,统一的主题。由于这个原因,使用 Vector 类的方式和使用 Properties 类的方式有着很大不同。因此集合框架被设计成要满足以下几个目标。
- 该框架必须是高性能的。基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。
- 该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性。
- 对一个集合的扩展和适应必须是简单的。
为此,整个集合框架就围绕一组标准接口而设计。可以直接使用这些接口的标准实现,诸如: LinkedList,HashSet,和 TreeSet 等,除此之外也可以通过这些接口实现自己的集合。

Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。
Collection 集合接口
Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java 不提供直接继承自 Collection 的类,只提供继承于的子接口(如List和set)。
Collection 接口的常见方法
这个接口它主要提供如下的成员方法
| 方法 | 描述 |
|---|---|
| boolean add(Object obj) | 添加到集合成功返回true。 |
| boolean addAll(Collection c) | 增加了C的所有元素到调用集合。 |
| void clear( ) | 移除调用集合中的所有元素。 |
| boolean contains(Object obj) | 检查是否包含 |
| boolean containsAll(Collection c) | 如果调用集合中包含c的所有元素返回true。 |
| boolean equals(Object obj) | 检查元素是否相等 |
| int hashCode( ) | 返回调用集合的哈希代码。 |
| boolean isEmpty( ) | 如果调用集合为空返回true。否则,返回false。 |
| Iterator iterator( ) | 返回一个迭代器的调用集合。 |
| boolean remove(Object obj) | 从调用集合中移除一个实例obj。 |
| boolean removeAll(Collection c) | 删除从调用集合c中的所有元素。 |
| boolean retainAll(Collection c) | 移除除了 c 的所有元素 |
| int size( ) | 集合元素的数量 |
| Object[ ] toArray( ) | 返回所有的元素到一个数组里 |
| Object[ ] toArray(Object array[ ]) | 返回一个与传入元素匹配的数组 |
这个 Collection 主要的子接口有 List、Set、SortedSet 这三种
迭代器的使用(Iterator)
参考资料 使用Iterator
Collection 内部实现了迭代器模式,所有一般要操作集合内的元素,例如迭代时删除这种操作就可以使用迭代器,甚至 foreach 都是基于迭代器的
List<String> list = List.of("Apple", "Orange", "Pear");
for (String s : list) {
System.out.println(s);
}
实际上,Java 编译器并不知道如何遍历 List。上述代码能够编译通过,只是因为编译器把 foreach 循环通过 Iterator 改写为了普通的 for 循环:
for (Iterator<String> it = list.iterator(); it.hasNext(); ) {
String s = it.next();
System.out.println(s);
}