Java 实用程序设计(西电版)第5章 容器类.ppt_第1页
Java 实用程序设计(西电版)第5章 容器类.ppt_第2页
Java 实用程序设计(西电版)第5章 容器类.ppt_第3页
Java 实用程序设计(西电版)第5章 容器类.ppt_第4页
Java 实用程序设计(西电版)第5章 容器类.ppt_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、,第 5 章 容 器 类,5.1 容器的概念与相互关系 5.2 Set接口及其实现 5.3 List接口及其实现 5.4 Queue接口及其实现 5.5 Map接口及其实现 5.6 迭代器 5.7 容器类的高级话题,5.1 容器的概念与相互关系Java容器类的对象实例又称为容器,容器用于保存对象。根据所存储的元素的形式,可将容器按照接口不同划分为两大类:(1) Collection:一个由一系列元素组成的序列,其中的元素是指向其他对象的引用。 (2) Map:一个由一系列“键值对”组成的序列,允许通过键查找值。,图5-1 容器层次的简要结构,5.2 Set接口及其实现Set不接受重复的元素。J

2、ava SE中提供3种Set容器的实现:HashSet、TreeSet和LinkedHashSet。HashSet类采用Hash表实现Set接口,它的查询速度最快,但其中的元素没有固定顺序;TreeSet类采用红黑树结构实现了SortedSet接口,能够保证元素处于排序状态;LinkedHashSet类采用Hash表与链表结合的方式实现Set接口,它能够以插入顺序保存元素。,5.3 List接口及其实现与数组类似地,List也可以建立数字索引与具体对象的关联,区别在于List可以自动扩充容量。Java SE中有两种类型的List:ArrayList和LinkedList。,5.4 Queue接

3、口及其实现Queue是一种先进先出(FIFO)的容器。程序从Queue的一端放入对象,从另一端取出对象,对象进入和取出的顺序是相同的。在Java SE中,LinkedList实现了Queue接口,因此LinkedList可以用作Queue的一种实现。,5.5 Map接口及其实现Map是一系列“键-值”之间的映射关系,是一种将对象(而非数字)与对象相关联的设计。在很多情况下,这一设计都能够有效地解决问题,例如,当我们需要统计一篇论文中的各个英文单词的个数时,可创建一个由String映射到Integer的Map。Map的值可以是复杂的结构,例如,当希望将一个科学家与其发表的论文列表建立映射时,可以

4、建立一个Map。,5.6 迭 代 器List容器可以通过索引对其中的元素进行访问,Queue可以通过具体方法对队首的元素进行访问。对于不同类型的容器,遍历和操作的方式是不同的。但是在有些时候,需要应对这样的情况,对于不同类型的容器,我们希望能够通过同样的方式执行访问,这样就不需要根据不同的容器类型进行不同的编码。容器的迭代器(Iterator)针对这一需求给出了解决方法。,迭代器具有如下特征:(1) 迭代器只能单向移动;(2) 使用容器的iterator()方法返回容器的迭代器,迭代器准备返回容器的第一个元素;(3) 使用next()方法获得序列的下一个元素;(4) 使用hasNext()方法

5、检查序列中是否还有元素;(5) 使用remove()将迭代器新近返回的元素(即由next()产生的最后一个元素)删除,因此在调用remove()之前必须先调用next()。,ListIterator是Iterator的子类型,它只能用于各类List容器的访问。通过List接口的listIterator方法能够返回用于List容器的ListIterator。与一般迭代器相比,ListIterator的功能更全面,除了具有Iterator接口所规定的行为特征以外,它还具有如下特征:(1) 使用hasPrevious()方法检查序列中是否有前一个元素;(2) 使用nextIndex()方法返回下一次

6、next()方法调用将要返回的元素的索引;(3) 使用previous()方法返回序列中的前一个元素;,(4) 使用previousIndex()方法返回下一次previous()方法调用将要返回的元素的索引;(5) 使用set()方法将上一次next()调用或previous()调用所返回的元素替换为参数所指定的元素;(6) 使用add()方法向序列中下一个next()被访问元素之前(亦即下一个previous()被访问元素之后)加入指定的元素。加入元素后,隐含指针在新加入元素之后,即调用next()的返回结果不变,而调用previous()的返回结果是新加入的元素。,5.7 容器类的高级话

7、题1. Comparable接口Comparable接口为实现这个接口的类的每一个对象提供了一种全序关系,即如果一个类实现了Comparable接口,那么这个类的任意两个对象就可以比较大小。这样的一种全序关系又称为这个类的自然顺序。实际上,Comparable接口中只有一个compareTo()方法的声明。这个类中对compareTo()方法的实现就是自然顺序的比较方法。,对compareTo()方法的具体实现应注意以下方面: (1) 如果当前对象小于参数对象,则返回负数;如果当前对象等于参数对象,则返回0;如果当前对象大于参数对象,则返回正数。(2) 对compareTo()的实现必须保证pareTo(y)的符号与pareTo(x)的符号相反,且pareTo(y)抛出异常,当且仅当pareTo(x)抛出异常。,(3) 自然顺序关系的传递性应得到保证,即(pareTo(y)0 & pareTo(z)0)蕴含pareTo(z)0。(4) 实现必须保证pareTo(y)=0能够蕴含对于任意z,pareTo(z)的符号与pareTo(z)的符号相同。,2. EnumSet与Enum

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论