没有合适的资源?快使用搜索试试~ 我知道了~
Java集合、泛型和枚举;Java集合、泛型和枚举;Java集合、泛型和枚举;Java集合、泛型和枚举;
资源推荐
资源详情
资源评论
Java 集合、泛型和枚举
Java 集合详解
在编程时,可以使用数组来保存多个对象,但数组长度不可变化,一旦在初始化数组时指定
了数组长度,这个数组长度就是不可变的。如果需要保存数量变化的数据,数组就有点无能
为力了。而且数组无法保存具有映射关系的数据,如成绩表为语文——79,数学——80,
这种数据看上去像两个数组,但这两个数组的元素之间有一定的关联关系。
为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组),Java
提供了集合类。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。Java
所有的集合类都位于 java.util 包下,提供了一个表示和操作对象集合的统一构架,包含大
量集合接口,以及这些接口的实现类和操作它们的算法。
集合类和数组不一样,数组元素既可以是基本类型的值,也可以是对象(实际上保存的是对
象的引用变量),而集合里只能保存对象(实际上只是保存对象的引用变量,但通常习惯上
认为集合里保存的是对象)。
Java 集合类型分为 Collection 和 Map,它们是 Java 集合的根接口,这两个接口又包含
了一些子接口或实现类。图 1 和图 2 分别为 Collection 和 Map 的子接口及其实现类。
图 1 Collection 接口基本结构
图 2 Map 接口基本结构
在 图 1 和图 2 中,黄色块为集合的接口,蓝色块为集合的实现类。表 1 介绍了这些接
口的作用。
表 1 Java 集合接口的作用
接口名称
作 用
Iterator 接
口
集合的输出接口,主要用于遍历输出(即迭代访问)Collection 集合中的
元素,Iterator 对象被称之为迭代器。迭代器接口是集合接口的父接口,实
现类实现 Collection 时就必须实现 Iterator 接口。
Collection
接口
是 List、Set 和 Queue 的父接口,是存放一组单值的最大接口。所谓的
单值是指集合中的每个元素都是一个对象。一般很少直接使用此接口直接操
作。
Queue 接
口
Queue 是 Java 提供的队列实现,有点类似于 List。
Dueue 接
口
是 Queue 的一个子接口,为双向队列。
List 接口
是最常用的接口。是有序集合,允许有相同的元素。使用 List 能够精确地
控制每个元素插入的位置,用户能够使用索引(元素在 List 中的位置,类
似于数组下标)来访问 List 中的元素,与数组类似。
Set 接口
不能包含重复的元素。
Map 接口
是存放一对值的最大接口,即接口中的每个元素都是一对,以 key➡value
的形式保存。
对于 Set、List、Queue 和 Map 这 4 种集合,Java 最常用的实现类分别是 HashSet、
TreeSet、ArrayList、ArrayDueue、LinkedList 和 HashMap、TreeMap 等。表 2 介
绍了集合中这些常用的实现类。
表 2 Java 集合实现类的作用
类名称
作用
HashSet
为优化査询速度而设计的 Set。它是基于 HashMap 实现的,HashSet 底
层使用 HashMap 来保存所有元素,实现比较简单
TreeSet
实现了 Set 接口,是一个有序的 Set,这样就能从 Set 里面提取一个有序
序列
ArrayList
一个用数组实现的 List,能进行快速的随机访问,效率高而且实现了可变
大小的数组
ArrayDueue
是一个基于数组实现的双端队列,按“先进先出”的方式操作集合元素
LinkedList
对顺序访问进行了优化,但随机访问的速度相对较慢。此外它还有
addFirst()、addLast()、getFirst()、getLast()、removeFirst() 和
removeLast() 等方法,能把它当成栈(Stack)或队列(Queue)来用
HsahMap
按哈希算法来存取键对象
TreeMap
可以对键对象进行排序
Collection 接口详解
Collection 接口是 List、Set 和 Queue 接口的父接口,通常情况下不被直接使用。
Collection 接口定义了一些通用的方法,通过这些方法可以实现对集合的基本操作。定义
的方法既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合。
本节将介绍 Collection 接口中常用的方法,如表 1 所示。
表 1 Collection 接口的常用方法
方法名称
说明
boolean add(E e)
向集合中添加一个元素,如果集合对象被添加操作改变了,
则返回 true。E 是元素的数据类型
boolean
addAll(Collection c)
向集合中添加集合 c 中的所有元素,如果集合对象被添加操
作改变了,则返回 true。
void clear()
清除集合中的所有元素,将集合长度变为 0。
boolean contains(Object
o)
判断集合中是否存在指定元素
boolean
containsAll(Collection c)
判断集合中是否包含集合 c 中的所有元素
boolean isEmpty()
判断集合是否为空
Iterator<E>iterator()
返回一个 Iterator 对象,用于遍历集合中的元素
boolean remove(Object
o)
从集合中删除一个指定元素,当集合中包含了一个或多个元
素 o 时,该方法只删除第一个符合条件的元素,该方法将返
回 true。
boolean
removeAll(Collection c)
从集合中删除所有在集合 c 中出现的元素(相当于把调用该
方法的集合减去集合 c)。如果该操作改变了调用该方法的
集合,则该方法返回 true。
boolean
retainAll(Collection c)
从集合中删除集合 c 里不包含的元素(相当于把调用该方法
的集合变成该集合和集合 c 的交集),如果该操作改变了调
用该方法的集合,则该方法返回 true。
int size()
返回集合中元素的个数
Object[] toArray()
把集合转换为一个数组,所有的集合元素变成对应的数组元
素。
注意:以上方法完全来自于 Java API 文档,读者可自行参考 API 文档来查阅这些方法的
详细信息。读者无需硬性记忆这些方法,可以和实际生活结合记忆。集合类就像容器,现实
生活中容器的功能,就是添加对象、删除对象、清空容器和判断容器是否为空等,集合类为
这些功能都提供了对应的方法。
例 1
剩余78页未读,继续阅读
资源评论
Andy&lin
- 粉丝: 97
- 资源: 214
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功