欢迎来到天天文库
浏览记录
ID:39945590
大小:313.50 KB
页数:151页
时间:2019-07-15
《java技术及其应用(下)ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Java技术及其应用1第1章语言基础第2章面向对象结构第3章基本I/O第4章增强性能类第5章收集与数据结构应用第6章图形用户界面及桌面应用第7章小程序及多媒体应用第8章JDBC与数据库应用第9章JavaBeans及组件应用第10章网络与Web服务应用2Java技术及其应用第5章收集与数据结构应用3如果我们知道多个对象的准确数量,可以用数组这种数据类型来存放这些对象。但在很多情况下,对象个数并不能事先确定,用数组保存就有困难。Java设计了收集(collection)系列,提供了更复杂的方式保存对象,解决了数组无法解决的问题。45.1收集的概念收集有时也叫容器(cont
2、ainer),它把多个元素放进一个单元里,形成一个对象。收集用于存储、读取、处理和交流聚集的数据。Java的收集形成了收集框架(collectionsframework)的体系结构,包括接口、实现、算法三部分。这种框架有许多优点,比如减轻编程负担,增加编程速度与质量,鼓励软件复用等。5这是收集系列的根,具有最大的通用性,允许重复元素存在,不要求元素排序等,是其他特殊收集的“最小公倍数”。通用目的的各种收集在实现时都用Collection做构造方法的参数,方便转换收集的类型。5.2Collection接口6Set是不能包含重复元素的Collection,它是数学集合抽象
3、的模型。Set接口的方法仅继承了Collection的方法,并增加不允许重复元素的限制。5.3Set7Java平台有三种通用目的的Set实现:HashSet,TreeSet和LinkedHashSet。HashSet用哈希表存放元素,实现性能最好,但不保证列举顺序。TreeSet用红-黑树存放元素,按元素值排次序,比HashSet慢。LinkedHashSet是链表实现的哈希表,按元素插入集合的顺序排次序,次序不混乱,但代价高一些,介于HashSet和TreeSet之间。5.3.1Set的实现8Set与成批操作形成数学的集合代数运算。假设a和b是Set,a.conta
4、insAll(b)可以判断b是否a的子集。a.addAll(b)形成a并b,a.retainAll(b)形成a交b,a.removeAll(b)形成a与b的差。还可以求a与b的对称差,即a与b的非共同元素组成的集合。5.3.2Set的数学应用9List是有序的Collection,有时也叫序列(sequence),基本上是按插入顺序排列的,可以包含重复元素。List接口继承了Collection的方法,删除操作总是删除列表中第一个出现的指定元素,加入操作总是加在列表的末尾。5.4List10Java平台有两种通用目的的List实现:ArrayList和LinkedLi
5、st。前者提供固定时间的按位置访问,插入删除是线性时间,通常性能比较好。后者的插入删除是固定时间,在经常需要插入删除时性能稍好。5.4.1List的实现115.4.2List的数据结构应用Collections类有许多算法适用于List,如合并排序(sort)、随机搅乱(shuffle)、序列反向(reverse)、循环(rotate)、元素交换(swap)、全部替换(replaceAll)、填充(fill)、拷贝(copy)、二分搜索(binarySearch)、首个子列表下标(indexOfSubList)、末个子列表下标(lastIndexOfSubList)等
6、,方便我们对数据进行处理。12Queue是保持元素重于处理元素的Collection,通常是按先进先出方式安排元素,插入元素是在队尾,删除元素是在队头。但优先队列是按值来安排的,插入不一定在队尾。有些Queue实现时限制了所保持元素的数量,称为限界。5.5Queue13每种Queue实现必须说明它的安排性质。LinkedList类实现了Queue接口,提供了先进先出队列的操作。PriorityQueue类是基于优先堆数据结构的优先队列,也实现了Queue接口。BlockingQueue接口是并发Queue接口,定义了阻塞队列的方法,由SynchronousQueue类
7、等几个并发队列类实现它。5.5.1Queue的实现14用优先队列实现堆排序。先创建一个随机列表,然后把随机列表放入PriorityQueue构造方法中形成堆,优先队列中删除的每个元素依次加入列表中,输出的列表已排好序。5.5.2Queue的数据结构应用15Map是把键(key)映射到值(value)的对象,映射不能包含重复的键,一个键至少可以映射一个值,它是数学函数抽象的模型。5.6Map16Java平台有三种通用目的的Map实现:HashMap,TreeMap和LinkedHashMap,它们的性能与HashSet,TreeSet和LinkedHa
此文档下载收益归作者所有