16.2 Collection接口

Collection 接口是一组允许重复的对象。定义了存取对象的方法。

Java不提供直接实现自Collection的类,Java提供的类都是继承自Collection的“子接口”(如:List和Set) 的实现类。

两个非常常用的子接口:

  • List接口:存放的元素有序(有下标)且允许有重复的集合接口。

  • Set接口:存放的元素无序且不允许有重复的集合接口。

    所有的重复内容都是靠hashCode()和euqals()两个方法区分的。

16.2.1 集合对象的创建

接口不能被实例化,所以创建集合对象,只能创建其接口的实现类。

注意:jdk1.5开始,Collection 集合都是泛型的。

public interface Collection<E> extends Iterable<E>{
}

所以我们在创建集合的时候就可以指定该集合要存放的类型。如:

Collection<String> c1 = new ArrayList<String>();
Collection<String> c2 = new LinkedList<String>();
Collection<String> c3 = new HashSet<String>();

那么在使用集合方法的时候,参数类型,以及返回值类型,受泛型参数类型的影响。

Collection<String> c1 = new ArrayList<String>();
c1.add("只能添加字符串");//add方法形参使用的是集合的泛型类型,所以这里只能传递字符串

16.2.2 Collection中常用的方法

方法名 描述
int size(); 返回此collection中的元素个数。
boolean isEmpty(); 判断此collection中是否包含元素。
boolean contains(Object obj); 判断此collection是否包含指定(equals为true)的元素。
boolean containsAll(Collection c); 判断此collection是否包含指定 Collection c 中的所有元素。比较方式通过 equals比较
boolean add(Object element); 向此collection中添加元素。
boolean addAll(Collection c); 将指定collection中的所有元素添加到此collection中
boolean remove(Object element); 从此collection中移除指定的元素,如果有多个对象重复,则只会删除第一个。
boolean removeAll(Collection c); 移除此collection中那些也包含在指定 Collection c 中的所有元素。比较方式通过 equals比较
void clear(); 移除collection中所有的元素。
boolean retainAll(Collection c); 仅保留此collection中那些也包含在指定 Collection c 的元素。比较方式通过 equals比较
Iterator iterator(); 返回在此collection的元素上进行迭代的迭代器。
Object[] toArray(); 把此collection转成数组。(常用泛型的那个toArray)

迭代过程中不允许操作Collection,会产生并发异常。

results matching ""

    No results matching ""