轻松学Java之集合框架

上传人:ldj****22 文档编号:49012131 上传时间:2018-07-22 格式:PPTX 页数:41 大小:901.84KB
返回 下载 相关 举报
轻松学Java之集合框架_第1页
第1页 / 共41页
轻松学Java之集合框架_第2页
第2页 / 共41页
轻松学Java之集合框架_第3页
第3页 / 共41页
轻松学Java之集合框架_第4页
第4页 / 共41页
轻松学Java之集合框架_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《轻松学Java之集合框架》由会员分享,可在线阅读,更多相关《轻松学Java之集合框架(41页珍藏版)》请在金锄头文库上搜索。

1、第13章 集合框架 Java集合框架是Java语言的重要组成部分,它包含了 系统而完整的集合层次体系,封装了大量的数据结 构的实现。深刻理解Java集合框架的组成结构及其中 的实现类和算法,能极大提高程序员编码的能力。 本章讲述Java集合框架,主要包括集合框架的概念、 集合框架接口,以及列表、集合、映射三种结构还 有迭代方法、比较方法和较早以前版本的类和接 口。下面就让我们一起来学习这些内容。13.1 集合框架概述 集合有时又称为容器,简单地说,它是一个对象, 能将具有相同性质的多个元素汇聚成一个整体。集 合被用于存储、获取、操纵和传输聚合的数据。 Java集合框架提供了有效的数据结构和算法

2、,因此程 序员不需要自己编写代码实现这些功能。而且结合 框架对各个接口的实现是可以互换的,因此很容易 转换接口。这样就提高了软件的复用性。13.1 集合框架概述 Java平台提供了一个全新的集合框架。集合框架的核 心接口为Collection、List(列表)、Set(集合)和 Map(映射),如图13.1所示。13.1 集合框架概述 由于上面的框架图较为复杂,读者基本了解就可以 ,不需要全部记下来。将上面的关系图简化后,只 需要读者记住的内容如图13.2所示。13.1 集合框架概述 从图13.2中可以看到,Collection是集合继承树中最 顶层的接口,几乎所有的Java集合框架成员都继承

3、实 现了Collection接口,或者与其有密切关系。 Collection提供了关于集合的通用操作。 Set接口和List接口都继承了Collection接口,而Map 接口没有继承Collection接口。因此,Set对象和List 对象都可以调用Collection接口的方法,而Map对象 则不可以。13.1 集合框架概述 下面我们对这三种类型接口的结构加以说明:Set有点类似数学 中集合的定义,是无序的、没有重复项目的集合。List是位置 性集合,加进清单的元素可以加在清单中特定位置或加到末尾 ,可以保存重复的元素。Map用于关键字/数值对,其中关键字 是数值的惟一标识(不可重复),用

4、户可以按关键字存取数据 ,数据可重复。具体形式如图13.3所示:13.2 Collection接口 Collection接口是集合框架最基础的接口,所以这个 接口定义了整个集合框架都可以调用的方法,因此 必须十分熟悉。Collection接口的定义方法如图13.4 所示。13.2 Collection接口 而Collection接口常用方法如表13.1所示。方法方法作用boolean add(E obj)将指定对象obj新增至集合内,增加成功传回true,否则传回falseboolean addAll(Collection c)将指定集合c内所有元素新增至集合内,增加成功传回true,否则传回

5、falseviod clear()将集合内所有元素清空boolean isEmpty()检查集合内是否没有任何元素,如果是传回true,否则传回falseIterator iterator()将集合内的元素信息转存成Iterator对象boolean remove(Object obj)将指定元素obj从集合内移除,成功移除传回true,否则传回falseint size()将集合内的元素总数传回Object toArray()将集合内的元素转存到数组后传回该数组13.2 Collection接口 知道了这些方法之后,我们就可以接着讨论实现他 们的标准类了。标准的Collection实现类总结

6、如表 13.2所示。类名类类的说说明AbstractCollection实现大多数Collection接口AbstractList扩展AbstractCollection并实现大多数List接口AbstractSequentialList为了被类集使用而扩展AbstractList,该类集是连续而不是用随机方式访问其元素LinkedList通过扩展AbstractSequentialList来实现连 接表ArrayList通过扩展AbstractList来实现动态 数组AbstractSet扩展AbstractCollection并实现大多数AbstractSetHashSet为了使用散列表而

7、扩展AbstractSetTreeSet实现存储在树中的一个集合,扩展扩展AbstractSet13.3 列表 List列表作为集合的一种,其主要特点在于其中的元 素保持一定的顺序。本节将具体讲解List的两种实现 类(ArrayList类和LinkedList类)的使用。13.3.1 ArrayList类 ArrayList类是对AbstractList类的扩展。ArrayList支持可随需要 而增长的动态数组。在Java中,标准数组是定长的。它们被创 建之后,就不能被加长或缩短,也就意味着开发者必须先知道 数组可以容纳多少元素。一般情况下,只有在运行时才能知道 需要多大的数组。为了解决这个

8、问题,类集框架定义了 ArrayList。ArrayList能够动态地增加或减小其大小。ArrayList 有三种构造方法,如图13.6所示。13.3.1 ArrayList类 ArrayList类的主要方法与功能描述如表13.3所示。方法功能描述public boolean add(E o)将指定的元素追加到列表的最后public void add(int index,E element)将参数element表示的元素插入此列表中参数index表示指定位置中public boolean addAll(Collection c)将Collection中所有元素追加到此列表的尾部public v

9、oid clear()删除列表中的所有元素public boolean contains(Object elem)判断此列表是否包含参数elem表示的指定元素public get(int index)返回列表中指定位置上的元素public boolean isEmpty()判断此列表中有没有元素public remove(int index)删除列表中指定位置上的元素public set(int index, E element)用参数element表示指定的元素代替列表中指定位置上的元素。public int size()返回列表中的元素数public Object toArray()返回一

10、个包含列表中所有元素的数组public T toArray(T a)返回一个包含列表中所有元素的数组void trimToSize()将容量调整为该列表的当前大小13.3.2 LinkedList类 LinkedList类是对AbstractSequentialList类的扩展。它 提供了一个链接列表的数据结构。LinkedList类有两 种构造方法,如图13.8所示。13.3.2 LinkedList类 除了它继承的方法之外,LinkedList类本身还定义了 一些有用的方法,这些方法主要用于操作和访问列 表。它们具体的作用我们用图13.9来表示。13.4 集合 Set集合是一种不包含重复元

11、素的Collection,即Set的 构造函数有一个约束条件,传入的Collection参数不 能包含重复的元素。本节将介绍Set中的两个主要的 类HashSet类和TreeSet类。13.4.1 HashSet类 HashSet类是对AbstractSet类的扩展。它创建了一个类集。该类 集使用散列表进行存储,而散列表则通过使用称之为散列法的 机制来存储信息。在散列中,一个关键字的信息内容被用来确 定唯一的一个值,称为散列码。而散列码则被用来当作与关键 字相连的数据的存储下标。HashSet类的构造方法如图13.11所 示。13.4.1 HashSet类 图13.11中所提到的填充比必须介于

12、0.0与1.0之间。它决定在散 列集合向上调整大小之前,有多少能被充满。具体地说,就是 当元素的个数大于散列集合容量乘以它的填充比时,散列集合 会被扩大。这里要注意的是,散列集合并不能确定其元素的排 列顺序。如果需要排序存储,可以使用下面将会讲到的TreeSet 类。HashSet类的主要方法及功能描述如表13.4所示。 正如上面所说的一样,HashSet中的元素并没有按照顺序进行存 储。方法功能描述public boolean add(E o)向集合添加指定元素public void clear()清空集合中所有元素public boolean contains(Object o)判断集合是

13、否包含指定元素public boolean isEmpty()判断集合是否还有元素。如果集合不包含任何元素,则返回truepublic Iterator iterator()返回对此集合中元素进行迭代的迭代器public boolean remove(Object o)删除集合中的元素public int size()返回此集合中的元素的个数public Object toArray将集合中的元素放到数组中,并返回该数组13.4.2 TreeSet类 TreeSet为使用树来进行存储的Set接口提供了一个工 具。对象按升序进行存储,这方便我们对其进行访 问和检索。在存储了大量的需要进行快速检索

14、的排 序信息的情况下,TreeSet是一个很好的选择。 TreeSet类的构造方法如图13.14所示。13.4.2 TreeSet类 在TreeSet类中有几个特殊的方法及功能描述,如表 13.5所示。方法功能描述public E first()返回有序集合中第一个元素,即最小的那个元素public E last()返回有序集合中最后一个元素,即最大的那个元素public SortedSet subSet(E fromElement,E toElement)返回有序集合从fromElement(包括)到toElement(不包括)的 元素13.5 通过迭代方法访问类集 通常我们会遇到要显示类集

15、中每一个元素的情况,这时我们也 许会想到用循环方法来完成。到目前为止,处理这个问题最简 单的方法是使用iterator()。iterator()是一个或者实现Iterator,或 者实现ListIterator接口的对象。Iterator可以完成通过循环输出 类集内容,从而获得或删除元素。ListIterator是对Iterator的扩 展,允许双向遍历列表,并且可以修改单元。 Iterator接口说明方法我们可以总结在表13.6中。方法方法说说明void add(Object obj)将Obj插入列表中的一个元素前,该元素在下一次调用next()方法时被返回boolean hasNext()

16、如果存在下一个元素,则返回true,否则返回falseboolean hasPrevious()如果存在前一个元素,则返回true,否则返回falseObject next()返回下一个元素,如不存在,引发一个NoSuchElementException异常int nextIndex()返回下一个元素的下表,如果不存在下一个元素,则返回列表的大小Object previous()返回前一个元素,如不存在,引发一个NoSuchElementException异常void remove()从列表中删除当前元素void set(Object obj)将obj赋给 当前元素。即上一次调用next()方法或previousfangfa后返回的元素13.5 通过迭代方法访问类集 现在我们来介绍使用迭代的方法。 在通过迭代方法访问类集之前,必须得到一个迭代方 法。通常,使用迭代方法循环输出类集内容的操作步骤 如图13.15所示。 对于执行List的类集,也可以通过调用List

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号