java 集合与泛型
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Collection 接口及实现类
Java 语言的Collection 接口及实现类是在java.util 包中定义的,其中定义了多个接口和类,它们统称为Java 集合框架(Java Collection Framework )。
Java 集合框架由两种类型构成,一个是Collection ,另一个是Map 。Collection 对象用于存放一组对象,Map 对象用于存放一组关键字/值的对象。Collection 和Map 是最基本的接口,它们又有子接口,这些接口的层次关系如图1所示。
图1 Java 集合框架的接口继承关系
1.1 Collection 接口及操作
Collection 接口是所有集合类型的根接口,它有三个子接口:Set 接口、List 接口和Queue 接口。
Collection 接口的定义如下:
public interface Collection
// 基本操作
int size();
boolean isEmpty();
boolean contains(Object element);
boolean add(E element);
boolean remove(Object element);
Iterator iterator();
// 批量操作
boolean containsAll(Collection> c);
boolean addAll(Collection extends E> c);
boolean removeAll(Collection> c);
boolean retainAll(Collection> c);
void clear();
// 数组操作
Object[] toArray();
}
说明 从JDK 1.5开始,Java 开始支持范型(generics )的概念。在Collection 接口
的声明中,
Collection 接口中定义的方法主要包括三类:集合操作、批量操作和数组操作。
1. 基本操作
实现基本操作的方法有size(),它返回集合中元素的个数;isEmpty()方法返回集合是否为空;contains()方法返回集合中是否包含指定的对象;add()方法和remove()方法实现向集合中添加元素和删除元素的功能;iterator()方法用来返回Iterator对象。
通过基本操作可以检索集合中的元素。检索集合中的元素有两种方法:使用增强的for 循环和使用Iterator迭代对象。
(1)使用增强的for循环
使用增强的for循环不但可以遍历数组的每个元素,还可以遍历集合的每个元素。下面的代码打印集合的每个元素:
for (Object o : collection)
System.out.println(o);
(2)使用迭代器
迭代器是一个可以遍历集合中每个元素的对象。通过调用集合对象的iterator()方法可以得到Iterator对象,再调用Iterator对象的方法就可以遍历集合中的每个元素。
Iterator接口的定义如下:
public interface Iterator
boolean hasNext();
E next();
void remove();
}
该接口的hasNext()方法返回迭代器中是否还有对象;next()方法返回迭代器中下一个对象;remove()方法删除迭代器中的对象,该方法同时从集合中删除对象。
假设c为一个Collection对象,要访问c中的每个元素,可以按下列方法实现:
Iterator it = c.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
2. 批量操作
实现批量操作的方法有containsAll(),它返回集合中是否包含指定集合中的所有元素;addAll()方法和removeAll()方法将指定集合中的元素添加到集合中和从集合中删除指定的集合元素;retainAll()方法删除集合中不属于指定集合中的元素;clear()方法删除集合中所有元素。
3. 数组操作
toArray()方法可以实现集合与数组的转换。该方法可以实现将集合元素转换成数组元素。无参数的toArray()方法实现将集合转换成Object类型的数组。有参数的toArray()方法将集合转换成指定类型的对象数组。
例如,假设c是一个Collection对象,下面的代码将c中的对象转换成一个新的Object 数组,数组的长度与集合c中的元素个数相同。
Object[] a = c.toArray();
假设我们知道c中只包含String对象,可以使用下面代码将其转换成String数组,它的长度与c中元素个数相同:
String[] a = c.toArray(new String[0]);
1.2 Set接口及实现类
Set接口是Collection的子接口,Set接口对象类似于数学上的集合概念,其中不允许有