Java 有几种方法来持有对象(更确切地说,是指向对象的引用)
编译器支持的类型是数组,前面已经讨论过,数组是持有一组对象的最高效的方式,而且要持有一组基本类型数据的话,数组也是不二之选
java.util 库有相当完整的一组集合类,其中基本的类型是 List、Set、Queue 和 Map。这些类型也叫作容器类,但本书中会使用 Java 库所使用的术语。集合类提供了一些持有对象的高级方法,并解决了相当多的问题
不同的集合类有不同的特征
尽管集合类在 Java 中没有直接的关键字支持,但它们是能够极大增强我们编程能力的基本工具
在本章中,我们会重点介绍典型用法,专注于会在日常编程中使用的那些集合类,进阶卷第 3 章中将介绍其他集合类,以及关于功能和用法的更多细节
使用 Java 5 之前的集合类,问题之一是编译器允许向集合中插入不正确的类型
例如,考虑一个 Apple 对象的集合,它使用了基本的主力集合类 ArrayList。现在可以把 ArrayList 看作“一个能自动扩展的数组”
在以下示例中,Apple 和 Orange 都被加入了该集合,然后又被取出来。正常情况下,Java 编译器会给出警告,因为这个实例没有使用泛型。这里使用了一个特殊的注解来忽略警告信息(进阶卷第 4 章回更详细地介绍 Java 注解):
创建使用 Java 泛型的类可能会非常复杂,然而使用提前定义好的泛型类则非常简单
借助泛型,就可以在编译时防止将错误类型的对象加入某个集合中(泛型的实际用途还有很多)
下面还是之前的示例,只不过使用了泛型: