10.1集合类概述
为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组),Java 提供了集合类。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。Java 所有的集合类都位于 java.util 包下,提供了一个表示和操作对象集合的统一构架,包含大量集合接口,以及这些接口的实现类和操作它们的算法。
集合类和数组不一样,数组元素既可以是基本类型的值,也可以是对象(实际上保存的是对象的引用变量),而集合里只能保存对象(实际上只是保存对象的引用变量,但通常习惯上认为集合里保存的是对象)。
Java 集合类型分为 Collection 和 Map,它们是 Java 集合的根接口,这两个接口又包含了一些子接口或实现类。图 1 和图 2 分别为 Collection 和 Map 的子接口及其实现类。
对于 Set、List、Queue 和 Map 这 4 种集合,Java 最常用的实现类分别是 HashSet、TreeSet、ArrayList、ArrayDueue、LinkedList 和 HashMap、TreeMap 等。表 2 介绍了集合中这些常用的实现类。
10.2Collection接口
Collection 接口是 List、Set 和 Queue 接口的父接口,通常情况下不被直接使用。Collection 接口定义了一些通用的方法,通过这些方法可以实现对集合的基本操作。定义的方法既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合。
注意:以上方法完全来自于 Java API 文档,读者可自行参考 API 文档来查阅这些方法的详细信息。读者无需硬性记忆这些方法,可以和实际生活结合记忆。集合类就像容器,现实生活中容器的功能,就是添加对象、删除对象、清空容器和判断容器是否为空等,集合类为这些功能都提供了对应的方法。
public static void main(String[] args) {
ArrayList list1 = new ArrayList(); // 创建集合 list1
ArrayList list2 = new ArrayList(); // 创建集合 list2
list1.add("one"); // 向 list1 添加一个元素
list1.add("two"); // 向 list1 添加一个元素
list2.addAll(list1); // 将 list1 的所有元素添加到 list2
list2.add("three"); // 向 list2 添加一个元素
System.out.println("list2 集合中的元素如下:");
Iterator it1 = list2.iterator();
while (it1.hasNext()) {
System.out.print(it1.next() + "、");
}
}
public static void main(String[] args) { ArrayList list1 = new ArrayList(); // 创建集合 list1 ArrayList list2 = new ArrayList(); // 创建集合 list2 list1.add("one"); list1.add("two"); list1.add("three"); System.out.println("list1 集合中的元素数量:" + list1.size()); // 输出list1中的元素数量 list2.add("two"); list2.add("four"); list2.add("six"); System.out.println("list2 集合中的元素数量:" + list2.size()); // 输出list2中的元素数量 list2.remove(2); // 删除第 3 个元素 System.out.println("\nremoveAll() 方法之后 list2 集合中的元素数量:" + list2.size()); System.out.println("list2 集合中的元素如下:"); Iterator it1 = list2.iterator(); while (it1.hasNext()) { System.out.print(it1.next() + "、"); } list1.removeAll(list2); System.out.println("\nremoveAll() 方法之后 list1 集合中的元素数量:" + list1.size()); System.out.println("list1 集合中的元素如下:"); Iterator it2 = list1.iterator(); while (it2.hasNext()) { System.out.print(it2.next() + "、");