Collection接口作为集合的一个根接口,它提供了对集合对象进行基本操作的通用接口方法,接口在Java 类库中有很多具体的实现。其意义是为各种具体的集合提供了最大化的统一操作方式。
JDK不提供此接口的任何直接实现,而是提供更具体的子接口,具体有Set接口、List接口、Queue接口。Set接口存放的元素是无序的且不包含重复元素(对象);List接口存放的元素是有序的且允许有重复的元素;Queue接口存放的元素顺序符合先入先出的规则,和我们日常生活中的排队模型很类似。Collection接口层次如下图所示:

Collection接口层次
Collection接口定义了一组对象和它的子类需要实现的 15 个方法,下面分类列出并说明。
1、容器类中添加、删除的操作方法
● boolean add(Object obj)
将Object对象添加到collection。
● boolean remove(Object obj)
如果collection中有与obj相匹配的对象,则删除该对象。
2、容器类中元素查询的操作方法
● int size()
返回当前集合中元素的数量。
● boolean isEmpty()
从当前collection中查询是否包含元素。
● boolean contains(Object obj)
查找此collection是否包含指定的元素。
● boolean contains(Collection collec)
判断此Collection是否包含指定Collection中所有元素。
● Iterator iterator ()
返回此Collection上的迭代器,用来访问该Collection中各个元素。
● boolean contains All(Collection collec)
判断Collection是否含有collec中的所有元素。
3、容器类中的组操作方法
● boolean addAll(Collection collec)
将指定的collec中的所有元素添加到当前Collection。
● void clear()
删除当前Collection中的所有元素。
● void removeAll(Collection collec)
从当前Collection中删除collec中的所有元素。
● void retainAll(Collection collec)
从当前Collection中删除collec中不包含的元素。
4、转换操作,用于集合与数组间的转换
● Object[] toArray()
将当前Collection转成对象数组
● Object[] toArray(Object[] a)
返回一个内含当前Collection所有元素的array。
在Collection中并未提供get()方法获取元素。如果要遍历Collection中的元素,一般要采用Iterator迭代器,可以通过Iterator迭代器遍历Collection各个对象元素。
5、Iterator接口(迭代器)中定义的方法如下:
● Iterator Iterator ()
返回集合的迭代器,用于遍历集合中对象。
● boolean hasNext()
判断当前迭代器是否有下一个元素。
● Object next()
返回当前迭代器指向的对象元素,并指向下一个对象元素
● void remove()
删除当前迭代器所指向的元素,一般和next方法一起用,这时候的作用就是删除next方法返回的元素。
Collection是接口类,不能实例化为对象,但可以实例化Collection接口的实现类,并把实现类的对象引用向上转型为Collection接口类型。
例如:
Collection list = new ArrayList();
在上面的例句中,ArrayList是Collection接口的实现类,代码将ArrayList的实例化对象赋值给Collection接口类型的变量list,此时可以使用list来存储继承于Object类的实例化对象。
案例1:建立CollectionTest类,实例化ArrayList对象,并将对象引用赋值给Collection类型的list变量,此时的list变量的值指向ArrayList的对象引用,因此list变量也可以称为list集合,使用list集合添加String对象,最后输出list集合中的String对象。
新建项目PCoreUnit5,在PCoreUnit5项目新建collection包,在collection包下新建CollectionTest类。代码如下:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* @ClassName: CollectionTest
* @Description: 集合框架(Collection接口)案例1
* @author 编程训练营
* @date
*
*/
public class CollectionTest {
/**
* @Title: main
* @Description: Java程序入口main方法
* @param @param args 参数
* @return void 返回类型
* @throws
*/
public static void main(String[] args) {
// 实例化ArrayList对象
Collection list = new ArrayList();
// 添加String对象到list集合
list.add("编程语言");
list.add("java");
list.add("Python");
// 获取list集合的迭代器
Iterator iterator = list.iterator();
// 使用while循环迭代集合中对象
while (iterator.hasNext()) {
String str = (String)iterator.next();
System.out.println(str);
}
}
}CollectionTest类的main方法中声明了Collection类型的list变量,实例化的ArrayList集合对象向上转型并赋值给list,list集合先后添加三个String对象。最后用Iterator迭代器遍历集合存储的所有String对象。集合中的对象类型都为Object类型,从集合中取得对象,必须把它转换成原来的类型。
Collection接口、ArrayList类、Iterator类都在APL库java.util包内,需要使用import语句导入这三个类。