没有合适的资源?快使用搜索试试~ 我知道了~
java集合框架全面进阶[归纳].pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 122 浏览量
2021-10-12
23:37:33
上传
评论
收藏 498KB PDF 举报
温馨提示
试读
36页
java集合框架全面进阶[归纳].pdf
资源详情
资源评论
资源推荐
java 集合框架全面进阶
概要说明:
本教程将带您漫游 “Java 集合框架 ”(Java Collection Framework )。为了尽快开始学习 “集合框架 ”,教
程从一些面向初学者和专家等读者的简单编程示例入手。接着,教程继续讨论集( Set)和映射( Map ),它
们的属性以及它们数学上的定义与 “集合框架 ”中的 Set、 Map 和 Collection 定义有何不同。 “Java 集合框架 ”的
历史那一节澄清了集和映射相关类的一些混淆。本教程彻底介绍了 “集合框架 ”中所有的接口和实现这些接口的
类。本教程不仅谈到了用线程安全和只读方式处理集合,还探讨了集合的算法支持。此外,教程还讨论了在
JDK 1.1 中使用 “集合框架 ”的一个子集。最后,教程以先于 “Java 集合框架 ”的 ObjectSpace 中一种广泛使用的算
法和数据结构库 JGL 的介绍作为结束。
概念
学完这个教程,您将了解:
集、映射、集合在数学上的含义。
“集合框架”的六个主要接口。
目的
学完这个教程,您将知道如何做以下的事:
使用具体的集合实现
通过集合排序和搜索
使用只读和线程安全的集合
集合的基础知识:
1. 介绍
本教程将带您漫游 “集合框架 ”( Collections Framework ),首先介绍 Java 2 平台,标准版,版本 1.2 。“集合
框架 ”提供了一组精心设计的接口和类,它们以单个单元即
集合
的形式存储和操作数据组。对于计算机科学数
据结构课程中学到的许多抽象数据类型如映射( map )、集(
Set
)、列表( list )、树( tree )、数组
(array )、散列表( hashtable )和其它集合来说,该框架提供了一个方便的 API 。由于它们面向对象的设计
要求, “集合框架 ”的 Java 类封装了与这些抽象相关的数据结构和算法。该框架给许多最常见的抽象提供一个
标准编程接口,而不需要让程序员为太多的过程和接口大伤脑筋。尽管如此, “集合框架 ”支持的操作还是允许
程序员轻松的定义如堆栈、队列和线程安全集合等更高级的数据抽象。
2. 数学背景
在常见用法中,
集合(
collection
)
和数学上直观的
集(
set
)
的概念是相同的。集是一个唯一项组,也就是
说组中没有重复项。实际上, “集合框架 ”包含了一个 Set 接口和许多具体的 Set 类。但正式的集概念却比
Java 技术提前了一个世纪,那时英国数学家 George Boole 按逻辑正式的定义了集的概念。大部分人在小学
时通过我们熟悉的维恩图引入的 “集的交 ”和“集的并 ”学到过一些集的理论。
集的一些现实的示例如下:
大写字母集 “A”到“Z”
非负整数集 {0, 1, 2 ...}
保留的 Java 编程语言关键字集 {'import', 'class', 'public', 'protected'...}
人集 (friends, employees, clients, ...)
数据库查询返回记录集
Container 的 Component 对象集
所有对( pair)集
空集 {}
集的基本属性如下:
集内只包含每项的一个实例
集可以是有限的,也可以是无限的
可以定义抽象概念
集不仅是逻辑学、数学和计算机科学的基础,对于商业和系统的日常应用来说,它也很实用。 “连接池 ”这一
概念就是数据库服务器的一个开放连接集。 Web 服务器必须管理客户机和连接集。文件描述符提供了操作系
统中另一个集的示例。
映射
是一种特别的集。它是一种对( pair )集,每个对表示一个元素到另一元素的单向映射。一些映射示例
有:
IP 地址到域名( DNS)的映射
关键字到数据库记录的映射
字典(词到含义的映射)
2 进制到 10 进制转换的映射
就像集一样,映射背后的思想比 Java 编程语言早的多,甚至比计算机科学还早。集和映射是数学领域的重
要工具,人们非常了解它们的属性。不仅如此,人们早就认识到用集和映射解决编程问题是有效的。 1969 年
发明的一种名为 SETL (Set Language )的语言只包含 set 一种基本数据类型( SETL 也包含垃圾收集 — 这
项技术在 20 世纪 90 年代开发了 Java 技术后才被人们普遍接受)。虽然连 C++ 在内的许多语言都包含集和
映射,但 “集合框架 ”很可能是设计最完美的集和映射包,并且是为流行的语言而写的。( C++ 标准模板库
(Standard Template Library (STL ))和 Smalltalk 的集合层次结构的用户对最后一点可能有争议。)
此外,因为映射也是集,所以它们可以是有限的,也可以是无限的。无限映射的一个示例如 2 进制到 10 进
制的转换。不幸的是, “集合框架 ”不支持无限映射 — 有时用数学函数、公式或算法更好。但在有限映射能解
决问题时, “集合框架 ”会给 Java 程序员提供一个有用的 API 。
因为 “集合框架 ”有类 Set 、Collection 和 Map 的正规定义,您会注意到小写的词 set 、collection 和 map 把实
现和概念区分开来。
3.java 集合类关键概念
集合类存放于 java.util 包中。
集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象
的引用( reference) 。
集合类型主要有 3 种: set(集)、 list( 列表)和 map( 映射 )。
1. 集 Set
Set 是最简单的一种集合,它的对象不按特定方式排序,只是简单的把对象加入集合中,就像往口袋里放东
西。 对集中成员的访问和操作是通过集中对象的引用进行的 ,所以集中不能有重复对象。集也有多种变体,可
以实现排序等功能,如 TreeSet ,它把对象添加到集中的操作将变为按照某种比较规则将其插入到有序的对象
序列中。它实现的是 SortedSet 接口,也就是加入了对象比较的方法。通过对集中的对象迭代,我们可以得到
一个升序的对象集合。
2. 列表 List
LIst 的主要特征是其对象以线性方式存储,没有特定顺序,只有一个开头和一个结尾,当然,它与根本没有
顺序的集是不同的。列表在数据结构中分别表现为:数组和向量、链表、堆栈、队列。关于实现列表的集合类,
是我们日常工作中经常用到的,将在后边的笔记详细介绍。
3. 映射 Map
map 与集或列表有明显区别,映射中每个项都是成对的。映射中存储的每个对象都有一个
相关的关键字( Key)对象,关键字决定了对象在映射中的存储位置,检索对象时必须提供相应的关键字,
就像在字典中查单词一样。关键字应该是唯一的。关键字本身并不能决定对象的存储位置,它需要对过一种散
列(hashing) 技术来处理,产生一个被称作散列码 (hash code) 的整数值,散列码通常用作一个偏置量,该偏置
量是相对于分配给映射的内存区域起始位置的,由此确定关键字 /对象对的存储位置。理想情况下,散列处理
应该产生给定范围内均匀分布的值,而且每个关键字应得到不同的散列码。
集合接口和类:
1. 集合框架的结构:
既然您已经具备了一些集的理论,您应该能够更轻松的理解 “集合框架 ”。 “集合框架 ”由 一组用来操作对象的
接口组成。不同接口描述不同类型的组。在很大程度上,一旦您理解了接口,您就理解了框架。虽然您总要创
建接口特定的实现,但访问实际集 合的方法应该限制在接口方法的使用上;因此,允许您更改基本的数据结
构而不必改变其它代码。框架接口层次结构如下图所示。
有的人可能会认为 Map 会继承 Collection 。在数学中,映射只是对( pair )的集合。但是,在 “集合框架 ”中,
接口 Map 和 Collection 在层次结构没有任何亲缘关系,它们是截然不同的。这种差别的原因与 Set 和 Map
在 Java 库中使用的方法有关。 Map 的典型应用是访问按关键字存储的值。它支持一系列集合操作的全部,但
操作的是键 -值对,而不是单个独立的元素。因此 Map 需要支持 get() 和 put() 的基本操作,而 Set 不需要。
此外,还有返回 Map 对象的 Set 视图的方法:
Set set = aMap.keySet();
用“集合框架 ”设计软件时,记住该框架四个基本接口的下列层次结构关系会有用处:
Collection 接口是一组允许重复的对象。
Set 接口继承 Collection ,但不允许重复。
List 接口继承 Collection ,允许重复,并引入位置下标。
Map 接口既不继承 Set 也不继承 Collection 。
让我们转到对框架实现的研究,具体的集合类遵循命名约定,并将基本数据结构和框架接口相结合。除了四
个历史集合类外, Java 2 框架还引入了六个集合实现,如下表所示。
接口 实现 历史集合类
Set HashSet
TreeSet
List ArrayList Vector
剩余35页未读,继续阅读
cyh76339129
- 粉丝: 1
- 资源: 14万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0