0%

8.2 Collection和Iterator接口

8.2 Collection和Iterator接口

Collection接口是ListSetQueue接口的父接口,该接口里定义的方法既可用于操作Set集合也可用于操作ListQueue集合。 Collection接口里定义了如下操作集合元素的方法

添加元素到集合的方法

方法 描述
boolean add(Object o) 该方法用于向集合里添加一个元素。如果集合对象被添加操作改变了,则返回true
boolean addAll(Collection c) 该方法把集合c里的所有元素添加到指定集合里。如果集合对象被添加操作改变了,则返回true

从集合中删除元素的方法

方法 描述
boolean remove(Object o) 删除集合中的指定元素o,当集合中包含了一个或多个元素o时,该方法只删除第一个符合条件的元素,并返回true
boolean removeAll(Collection c) 从集合中删除集合c里包含的所有元素(相当于用调用该方法的集合减集合c),如果删除了一个或一个以上的元素,则该方法返回true
boolean retainAll(Collection c) 从集合中删除集合c里不包含的元素(相当于把调用该方法的集合变成该集合和集合c的交集),如果该操作改变了调用该方法的集合,则该方法返回true
void clear() 清除集合里的所有元素,将集合长度变为0。
## 查找元素的方法 ##
方法 描述
:— :—
boolean contains(Object o) 返回集合里是否包含指定元素。
boolean containsAll( Collection c) 返回集合里是否包含集合c里的所有元素。
## 集合长度相关方法 ##
方法 描述
:— :—
boolean isEmpty() 返回集合是否为空。当集合长度为0时返回true,否则返回false
int size() 该方法返回集合里元素的个数。
## 取出迭代器或转为数组 ##
方法 描述
:— :—
Iterator iterator() 返回一个Iterator对象,用于遍历集合里的元素。
Object[] toArray() 该方法把集合转换成一个数组,所有的集合元素变成对应的数组元素。
## 程序示例 ##
下面程序示范了如何通过上面方法来操作Collection集合里的元素。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.util.*;

public class CollectionTest
{
public static void main(String[] args)
{
Collection c = new ArrayList();
// 添加元素
c.add("孙悟空");
// 虽然集合里不能放基本类型的值,但Java支持自动装箱
c.add(6);
System.out.println("c集合的元素个数为:" + c.size()); // 输出2
// 删除指定元素
c.remove(6);
System.out.println("c集合的元素个数为:" + c.size()); // 输出1
// 判断是否包含指定字符串
System.out.println("c集合的是否包含\"孙悟空\"字符串:"
+ c.contains("孙悟空")); // 输出true
c.add("轻量级Java EE企业应用实战");
System.out.println("c集合的元素:" + c);
Collection books = new HashSet();
books.add("轻量级Java EE企业应用实战");
books.add("疯狂Java讲义");
System.out.println("c集合是否完全包含books集合?"
+ c.containsAll(books)); // 输出false
// 用c集合减去books集合里的元素
c.removeAll(books);
System.out.println("c集合的元素:" + c);
// 删除c集合里所有元素
c.clear();
System.out.println("c集合的元素:" + c);
// 控制books集合里只剩下c集合里也包含的元素
books.retainAll(c);
System.out.println("books集合的元素:" + books);
}
}

上面程序中创建了两个Collection对象,一个是c集合,一个是books集合,其中c集合是ArrayList,而books集合是HashSet()虽然它们使用的实现类不同,但当把它们当成Collection来使用时,使用add,remove,clear等方法来操作集合元素时没有任何区别。
编译和运行上面程序,看到如下运行结果:

1
2
3
4
5
6
7
8
c集合的元素个数为:2
c集合的元素个数为:1
c集合的是否包含"孙悟空"字符串:true
c集合的元素:[孙悟空, 轻量级Java EE企业应用实战]
c集合是否完全包含books集合?false
c集合的元素:[孙悟空]
c集合的元素:[]
books集合的元素:[]

总结

Collection的用法有:添加元素删除元素、返回Collection集合的元素个数以及清空整个集合等。
当使用System.outprintln()方法来输出集合对象时,将输出[e1,e2,...]的形式,这显然是因为所有的Collection实现类都重写了toString()方法,该方法可以一次性地输出集合中的所有元素。
如果想依次访问集合里的每一个元素,则需要使用某种方式来遍历集合元素,下面介绍遍历集合元素的两种方法

原文链接: 8.2 Collection和Iterator接口