3.7Java语言的集合(Collection)

Java提供了数组这种数据类型,可以充当集合,那么,我们为什么还需要集合类呢?这是因为数组有如下限制:

  • 数组只能按索引顺序存取;
  • 数组中的元素必须属于同一个类型;
  • 数组初始化后长度不可变;

因此,我们需要各种不同类型的集合类来处理不同的数据,例如:

  • 可变长度的数据;
  • 保证无重复元素的集合;
.7Java语言的集合(Collection)"/
图 1  Collection接口基本结构
.7Java语言的集合(Collection)"/
图 2  Map接口基本结构

在 图 1 和图 2 中,黄色块为集合的接口,蓝色块为集合的实现类。表 1 介绍了这些接口的作用。

接口名称作    用
Iterable 接口Collection 接口的父接口。
Collection 接口是 Queue、List和 Set 的父接口。
Queue 接口Queue 是 Java 提供的队列实现,有点类似于 List。
Deque 接口是 Queue 的一个子接口,为双向队列。
List 接口与数组的区别是初始化后长度可变。
Set 接口不能包含重复元素的无序集合。
Map 接口接口中的每个元素都是一对,以 key➡value 的形式保存。
表 1 Java集合接口的作用

对于 Queue、List、Set 和 Map 这 4 种集合,Java 最常用的实现类分别是 ArrayDeque、LinkedList、ArrayList、TreeSet、HashSet、 和 HashMap、TreeMap 等。表 2 介绍了集合中这些常用的实现类。

类名称作用
PriorityQueue(优先队列)允许高效删除最小元素的一个集合
ArrayDeque(数组双端队列)实现为循环数组的一个双端队列
LinkedList(链表)可以在任何位置高效插入和删除的一个有序序列
ArrayList(数组列表)可以动态增长和缩减的一个索引序列
EnumSet(枚举集)一个包含枚举类型值的集
TreeSet(树集)一个有序集
HashSet(散列集)没有重复元素的一个无序集合
LinkedHashSet(链接散列集)一个可以记住元素插入次序的集
HashMap(散列映射)存储键/值关联的一个数据结构
LinkedHashMap(链接散列映射)可以记住键/值项添加次序的一个映射
WeakHashMap(弱散列映射)值不会在别处使用时就可以被垃圾回收的一个映射
IdentityHashMap(标识散列映射)用==而不是用equals比较键的一个映射
TreeMap(树映射)键有序的一个映射
EnumMap(枚举映射)键属于枚举类型的一个映射
表 2 Java集合实现类的作用

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/java/javabasic/2512.html

发表评论

登录后才能评论