8.2 Collection和Iterator接口
Collection
接口是List
、Set
和Queue
接口的父接口,该接口里定义的方法既可用于操作Set
集合也可用于操作List
和Queue
集合。 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里不包含的元素,(相当于把调用该方法的集合变成该集合和集合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集合方法介绍
下面程序示范了如何通过上面方法来操作Collection
集合里的元素。
D:\Desktop\随书源码\疯狂Java讲义(第4版)光盘\codes\08\8.2\CollectionTest.java1 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 37 38 39 40 41 42 43 44
| import java.util.*;
public class CollectionTest { public static void main(String[] args) { Collection c = new ArrayList(); c.add("红楼梦"); c.add(6); System.out.println("c集合的元素个数为:" + c.size()); c.remove(6); System.out.println("c集合的元素个数为:" + c.size()); System.out.println("c集合的是否包含\"红楼梦\"字符串:" + c.contains("红楼梦")); c.add("三国演义"); System.out.println("c集合的元素:" + c); Collection b = new HashSet(); b.add("三国演义"); b.add("西游记"); System.out.println("b集合的元素:" + b); System.out.println("c集合是否完全包含b集合?" + c.containsAll(b)); c.removeAll(b); System.out.println("c集合的元素:" + c); c.clear(); System.out.println("c集合的元素:" + c); System.out.println("______________________"); c.add("红楼梦"); c.add("三国演义");
b.add("三国演义"); b.add("西游记"); System.out.println(c); System.out.println(b); b.retainAll(c); System.out.println("b集合的元素:" + b); } }
|
上面程序中创建了两个Collection
对象,一个是c集合,一个是books
集合,其中c集合是ArrayList
,而books
集合是HashSet()
虽然它们使用的实现类不同,但当把它们当成Collection
来使用时,使用add
,remove
,clear
等方法来操作集合元素时没有任何区别。
编译和运行上面程序,看到如下运行结果:
1 2 3 4 5 6 7 8 9 10 11 12
| c集合的元素个数为:2 c集合的元素个数为:1 c集合的是否包含"红楼梦"字符串:true c集合的元素:[红楼梦, 三国演义] b集合的元素:[三国演义, 西游记] c集合是否完全包含b集合?false c集合的元素:[红楼梦] c集合的元素:[] ______________________ [红楼梦, 三国演义] [三国演义, 西游记] b集合的元素:[三国演义]
|
总结
Collection
的用法有: 添加元素、删除元素、返回元素个数 以及清空整个集合等。
当使用System.out
的println()
方法来输出集合对象时,将输出[e1,e2,...]
的形式,这显然是因为所有的Collection
实现类都重写了toString()
方法,该方法可以一次性地输出集合中的所有元素。
如果想依次访问集合里的每一个元素,则需要使用某种方式来遍历集合元素,下面介绍遍历集合元素的两种方法。