首页 > 编程笔记 > Java笔记 阅读:12

Java Collection集合类详解(附带实例)

生活中人们使用容器装东西,而集合就类似于容器,可以进行数据的添加、删除、清空等操作。因此集合类也被称为容器类。

在 java.util 包中,有一系列可以使用的接口和类,这些接口和类统称为集合框架。在框架结构上,集合分为 List、Queue、Set 和 Map 四大体系,另外集合框架中的所有接口和类都派生于 Collection 和 Map 两个根接口。

如下图所示,给出了 Java 集合框架图:


图 1 集合框架图

Collection 接口是集合框架的顶级接口,是 List、Set 等接口的父接口,在 Collection 接口里定义的方法可用于操作 List 集合、Set 集合。

Collection 接口里定义的操作集合元素的常用方法,如下表所示:

表:Collection 接口的常用方法
方法 方法描述
boolean add(Object o) 添加一个 Object 类型的元素到集合中,并返回是否添加成功
boolean addAll(Collection c) 向集合中批量添加指定 Collection 中的所有元素,并返回是否添加成功
void clear() 清空集合中的所有元素
boolean contains(Object o) 判断某个元素是否包含在集合中,如果包含则返回 true
boolean containsAll(Collection c) 判断集合中是否包含了指定 Collection 中的所有元素,如果都包含返回 true
boolean equals(Collection c) 比较当前集合对象与指定 Collection 集合对象是否相等
int hashCode() 返回当前 Collection 集合的哈希码值
Iterator iterator() 返回与当前 Collection 集合关联的迭代器对象
boolean remove(Object o) 删除当前集合中的指定元素
boolean removeAll(Collection c) 从当前集合中删除所有与指定集合 c 中相同的元素,如果当前集合中有元素被删除则返回 true
boolean retainAll(Collection c) 保留当前集合中那些也包含在指定集合 c 中的元素,如果当前集合在操作后元素有变化则返回 true
Object[] toArray() 返回当前 Collection 中所有元素组成的数组
boolean isEmpty() 判断当前集合是否为空。如果是则返回 true,否则返回 false
int size() 返回当前集合的元素个数

接下来,通过案例来演示 Collection 集合的一些常用方法的使用:
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;

public class Demo {
    public static void main(String[] args) {
        Collection carList1 = new ArrayList();    // 创建 ArrayList 集合
        carList1.add("保时捷");    // 添加元素
        carList1.add("兰博基尼");
        carList1.add("劳斯莱斯");
        System.out.println(carList1.size());    // 打印集合长度
        System.out.println(carList1);    // 打印集合内容
        carList1.remove("兰博基尼");    // 根据内容删除1个元素
        System.out.println(carList1);    // 再次打印集合内容
        System.out.println("=================");
        Collection carList2 = new HashSet();    // 创建 HashSet 集合
        carList2.add("宝马");
        carList2.add("奔驰");
        carList2.add("法拉利");
        System.out.println(carList2.size());    // 打印集合长度
        System.out.println(carList2);    // 打印集合内容
        carList2.clear();    // 清空集合
        System.out.println(carList2.isEmpty());    // 打印集合是否为空
        System.out.println(carList2);    // 再次打印集合内容
    }
}
程序的运行结果如下:

3
[保时捷, 兰博基尼, 劳斯莱斯]
[保时捷, 劳斯莱斯]
=================
3
[法拉利, 宝马, 奔驰]
true
[]

实例中创建了两个 Collection 对象,一个是 carList1,它是 Collection 的实现类 ArrayList 的实例对象。另外一个是 carList2,它是 Collection 实现类 HashSet 的实例对象。

虽然这两个是不同的实现类对象,但是由于两个实现类都实现了 Collection 接口,所以可以把它们当成 Collection 来使用,因此这两个对象都可以使用 add() 方法向集合中添加元素,这种情况用到了 Java 的多态特性。

这段代码还使用了还使用了 size() 方法查看集合元素个数,通过 clear() 方法清空集合元素,以及通过 isEmpty() 方法判断集合是否为空。

注意在使用集合时,不要忘记使用“import java.util.*;”导包语句,导入集合类,否则程序会编译失败,提示找不到符号。

实例在打印输出集合时,输出的都是集合元素拼接后的字符串内容。这是因为 Collection 的实现类重写了 Object 的 toString() 方法,重写后的方法会将集合中的元素以字符串的方式拼接起来作为返回值。而在打印输出集合的时候,输出方法会自动调用集合重写的 toString() 方法,所以集合中的元素都会以字符串拼接的方式被打印出来。

相关文章