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,会产生并发异常。