![Java高级程序设计](https://wfqqreader-1252317822.image.myqcloud.com/cover/94/53287094/b_53287094.jpg)
1.1.1 集合概述
Java 数组的长度是固定的,在同一个数组中只能存放相同类型的数据。数组可以存放基本类型的数据,也可以存放引用类型的数据。在创建Java数组时,必须明确指定数组的长度,数组一旦创建,其长度就不能被改变。在许多应用场合,一组数据的数目不是固定的,比如一个单位的员工数目是变化的,有新的员工入职,也有老的员工离职。并且在使用数组进行一些操作的时候效率比较低,例如要删除数组中的某个元素,需要把后面的元素都向前移动。
为了使程序能方便地存储和操作数目不固定的一组数据,JDK(Java DeveIopment Kit)提供了Java集合,所有Java集合类都位于java.utiI包中。Java语言中集合类是用来存放对象的,集合相当于一个容器,里面包容着一组对象,其中的每个对象作为集合的一个元素出现。与Java数组不同,Java集合中不能存放基本数据类型,而只能存放对象的引用。Java数组与集合的区别主要有以下两点。
(1)数组也是容器,它是定长的,访问较快,但是数组不会自动扩充。
(2)数组可以包含基本数据类型或引用类型的对象,而集合中只能包含引用类型的对象。
如图1-1所示,Java集合主要分为以下3种类型。
![](https://epubservercos.yuewen.com/E2D37C/31751349504054906/epubprivate/OEBPS/Images/figure-0012-0002.jpg?sign=1739689438-OKjZ4taviVW1m6Onj2b6ZFWlfNmtr929-0-f1e46e23b26bb6319a59d0f4f7f2b0d6)
图1-1 Java集合中的3种类型
Set(集):集合中的对象不按特定方式排序,并且没有重复对象。有些实现类能将集合中的对象按特定方式排序。
List(列表):集合中的对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象。List与数组有些相似。
Map(映射):集合中的每一个元素包含一对键对象和值对象,集合中没有重复的键对象,值对象可以重复。它的有些实现类能对集合中的键对象进行排序。
Set、List和Map统称为Java集合,其中,Set与数学中的集合最接近,两者都不允许包含重复元素。