【精品】java 实用程序设计(西电版第5章 容器类(可编辑.ppt
-
资源ID:71301685
资源大小:1.75MB
全文页数:52页
- 资源格式: PPT
下载积分:15金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
【精品】java 实用程序设计(西电版第5章 容器类(可编辑.ppt
Java 实用程序设计(西电版)第5章 容器类2 2第 5 章 容 器 类5.1 容器的概念与相互关系Java容器类的对象实例又称为容器,容器用于保存对象。根据所存储的元素的形式,可将容器按照接口不同划分为两大类:(1)Collection:一个由一系列元素组成的序列,其中的元素是指向其他对象的引用。(2)Map:一个由一系列“键值对”组成的序列,允许通过键查找值。3 3第 5 章 容 器 类图5-1 容器层次的简要结构4 4第 5 章 容 器 类5 5第 5 章 容 器 类6 6第 5 章 容 器 类7 7第 5 章 容 器 类8 8第 5 章 容 器 类9 9第 5 章 容 器 类10 10第 5 章 容 器 类11 11第 5 章 容 器 类12 12第 5 章 容 器 类5.3 List接口及其实现与数组类似地,List也可以建立数字索引与具体对象的关联,区别在于List可以自动扩充容量。Java SE中有两种类型的List:ArrayList和LinkedList。13 13第 5 章 容 器 类14 14第 5 章 容 器 类15 15第 5 章 容 器 类16 16第 5 章 容 器 类17 17第 5 章 容 器 类18 18第 5 章 容 器 类19 19第 5 章 容 器 类5.4 Queue接口及其实现Queue是一种先进先出(FIFO)的容器。程序从Queue的一端放入对象,从另一端取出对象,对象进入和取出的顺序是相同的。在Java SE中,LinkedList实现了Queue接口,因此LinkedList可以用作Queue的一种实现。2020第 5 章 容 器 类21 21第 5 章 容 器 类2222第 5 章 容 器 类2323第 5 章 容 器 类2424第 5 章 容 器 类2525第 5 章 容 器 类5.5 Map接口及其实现Map是一系列“键-值”之间的映射关系,是一种将对象(而非数字)与对象相关联的设计。在很多情况下,这一设计都能够有效地解决问题,例如,当我们需要统计一篇论文中的各个英文单词的个数时,可创建一个由String映射到Integer的Map。Map的值可以是复杂的结构,例如,当希望将一个科学家与其发表的论文列表建立映射时,可以建立一个MapScientist,List。2626第 5 章 容 器 类2727第 5 章 容 器 类2828第 5 章 容 器 类2929第 5 章 容 器 类3030第 5 章 容 器 类5.6 迭 代 器List容器可以通过索引对其中的元素进行访问,Queue可以通过具体方法对队首的元素进行访问。对于不同类型的容器,遍历和操作的方式是不同的。但是在有些时候,需要应对这样的情况,对于不同类型的容器,我们希望能够通过同样的方式执行访问,这样就不需要根据不同的容器类型进行不同的编码。容器的迭代器(Iterator)针对这一需求给出了解决方法。31 31第 5 章 容 器 类迭代器具有如下特征:(1)迭代器只能单向移动;(2)使用容器的iterator()方法返回容器的迭代器,迭代器准备返回容器的第一个元素;(3)使用next()方法获得序列的下一个元素;(4)使用hasNext()方法检查序列中是否还有元素;(5)使用remove()将迭代器新近返回的元素(即由next()产生的最后一个元素)删除,因此在调用remove()之前必须先调用next()。3232第 5 章 容 器 类3333第 5 章 容 器 类3434第 5 章 容 器 类ListIterator是Iterator的子类型,它只能用于各类List容器的访问。通过List接口的listIterator方法能够返回用于List容器的ListIterator。与一般迭代器相比,ListIterator的功能更全面,除了具有Iterator接口所规定的行为特征以外,它还具有如下特征:(1)使用hasPrevious()方法检查序列中是否有前一个元素;(2)使用nextIndex()方法返回下一次next()方法调用将要返回的元素的索引;(3)使用previous()方法返回序列中的前一个元素;3535第 5 章 容 器 类(4)使用previousIndex()方法返回下一次previous()方法调用将要返回的元素的索引;(5)使用set()方法将上一次next()调用或previous()调用所返回的元素替换为参数所指定的元素;(6)使用add()方法向序列中下一个next()被访问元素之前(亦即下一个previous()被访问元素之后)加入指定的元素。加入元素后,隐含指针在新加入元素之后,即调用next()的返回结果不变,而调用previous()的返回结果是新加入的元素。3636第 5 章 容 器 类3737第 5 章 容 器 类3838第 5 章 容 器 类3939第 5 章 容 器 类4040第 5 章 容 器 类5.7 容器类的高级话题1.Comparable接口Comparable接口为实现这个接口的类的每一个对象提供了一种全序关系,即如果一个类实现了Comparable接口,那么这个类的任意两个对象就可以比较大小。这样的一种全序关系又称为这个类的自然顺序。实际上,Comparable接口中只有一个compareTo()方法的声明。这个类中对compareTo()方法的实现就是自然顺序的比较方法。41 41第 5 章 容 器 类对compareTo()方法的具体实现应注意以下方面:(1)如果当前对象小于参数对象,则返回负数;如果当前对象等于参数对象,则返回0;如果当前对象大于参数对象,则返回正数。(2)对compareTo()的实现必须保证pareTo(y)的符号与pareTo(x)的符号相反,且pareTo(y)抛出异常,当且仅当pareTo(x)抛出异常。4242第 5 章 容 器 类(3)自然顺序关系的传递性应得到保证,即(pareTo(y)0&pareTo(z)0)蕴含pareTo(z)0。(4)实现必须保证pareTo(y)=0能够蕴含对于任意z,pareTo(z)的符号与pareTo(z)的符号相同。4343第 5 章 容 器 类4444第 5 章 容 器 类4545第 5 章 容 器 类4646第 5 章 容 器 类4747第 5 章 容 器 类2.EnumSet与EnumMapEnumSet中的元素必须来自某个枚举类型,当创建EnumSet时,必须指定这个枚举类型。EnumSet的内部是由位向量表示的,以保证其高效性。EnumSet除了包含从Set接口继承的方法之外,还包含一些特有的接口方法,见表5-5。4848第 5 章 容 器 类4949第 5 章 容 器 类5050第 5 章 容 器 类51 51第 5 章 容 器 类5252第 5 章 容 器 类