欢迎来到天天文库
浏览记录
ID:41233154
大小:2.37 MB
页数:52页
时间:2019-08-20
《Java实用程序设计(西电版)第5章容器类》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章容器类5.1容器的概念与相互关系5.2Set接口及其实现5.3List接口及其实现5.4Queue接口及其实现5.5Map接口及其实现5.6迭代器5.7容器类的高级话题5.1容器的概念与相互关系Java容器类的对象实例又称为容器,容器用于保存对象。根据所存储的元素的形式,可将容器按照接口不同划分为两大类:(1)Collection:一个由一系列元素组成的序列,其中的元素是指向其他对象的引用。(2)Map:一个由一系列“键值对”组成的序列,允许通过键查找值。图5-1容器层次的简要结构5.2Set接口及其实现Set不
2、接受重复的元素。JavaSE中提供3种Set容器的实现:HashSet、TreeSet和LinkedHashSet。HashSet类采用Hash表实现Set接口,它的查询速度最快,但其中的元素没有固定顺序;TreeSet类采用红黑树结构实现了SortedSet接口,能够保证元素处于排序状态;LinkedHashSet类采用Hash表与链表结合的方式实现Set接口,它能够以插入顺序保存元素。5.3List接口及其实现与数组类似地,List也可以建立数字索引与具体对象的关联,区别在于List可以自动扩充容量。JavaSE中
3、有两种类型的List:ArrayList和LinkedList。5.4Queue接口及其实现Queue是一种先进先出(FIFO)的容器。程序从Queue的一端放入对象,从另一端取出对象,对象进入和取出的顺序是相同的。在JavaSE中,LinkedList实现了Queue接口,因此LinkedList可以用作Queue的一种实现。5.5Map接口及其实现Map是一系列“键-值”之间的映射关系,是一种将对象(而非数字)与对象相关联的设计。在很多情况下,这一设计都能够有效地解决问题,例如,当我们需要统计一篇论文中的各个英文单
4、词的个数时,可创建一个由String映射到Integer的Map。Map的值可以是复杂的结构,例如,当希望将一个科学家与其发表的论文列表建立映射时,可以建立一个Map>。5.6迭代器List容器可以通过索引对其中的元素进行访问,Queue可以通过具体方法对队首的元素进行访问。对于不同类型的容器,遍历和操作的方式是不同的。但是在有些时候,需要应对这样的情况,对于不同类型的容器,我们希望能够通过同样的方式执行访问,这样就不需要根据不同的容器类型进行不同的编码。容器的迭代器(Ite
5、rator)针对这一需求给出了解决方法。迭代器具有如下特征:(1)迭代器只能单向移动;(2)使用容器的iterator()方法返回容器的迭代器,迭代器准备返回容器的第一个元素;(3)使用next()方法获得序列的下一个元素;(4)使用hasNext()方法检查序列中是否还有元素;(5)使用remove()将迭代器新近返回的元素(即由next()产生的最后一个元素)删除,因此在调用remove()之前必须先调用next()。ListIterator是Iterator的子类型,它只能用于各类List容器的访问。通过List
6、接口的listIterator方法能够返回用于List容器的ListIterator。与一般迭代器相比,ListIterator的功能更全面,除了具有Iterator接口所规定的行为特征以外,它还具有如下特征:(1)使用hasPrevious()方法检查序列中是否有前一个元素;(2)使用nextIndex()方法返回下一次next()方法调用将要返回的元素的索引;(3)使用previous()方法返回序列中的前一个元素;(4)使用previousIndex()方法返回下一次previous()方法调用将要返回的元素的索
7、引;(5)使用set()方法将上一次next()调用或previous()调用所返回的元素替换为参数所指定的元素;(6)使用add()方法向序列中下一个next()被访问元素之前(亦即下一个previous()被访问元素之后)加入指定的元素。加入元素后,隐含指针在新加入元素之后,即调用next()的返回结果不变,而调用previous()的返回结果是新加入的元素。5.7容器类的高级话题1.Comparable接口Comparable接口为实现这个接口的类的每一个对象提供了一种全序关系,即如果一个类实现了Comparab
8、le接口,那么这个类的任意两个对象就可以比较大小。这样的一种全序关系又称为这个类的自然顺序。实际上,Comparable接口中只有一个compareTo()方法的声明。这个类中对compareTo()方法的实现就是自然顺序的比较方法。对compareTo()方法的具体实现应注意以下方面:(1)如果当前对象小于参数对象,则返回负数;
此文档下载收益归作者所有