Java实用教程第23讲集合ppt课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

23.2.3 List〔线性表〕
规那么集中不能存储反复的元素。可以运用线性表 来存储反复元素,另外线性表还可以为元素指定存储位 置,运用下标进展访问。常用的实现List接口的类有两 个ArrayList和LinkedList,它们都按照被插入的顺序保 管元素,两者的不同在于执行某些操作时的性能。〔Βιβλιοθήκη 〕ArrayList〔数组线性表〕
① boolean add(E e):将指定的元素插入此队列〔假设 立刻可行且不会违反容量限制〕,在胜利时前往true, 假设当前没有可用的空间,那么抛出 IllegalStateException。
② E element():获取,但是不移除此队列的头。
③ boolean offer(E e):将指定的元素插入此队列〔假 设立刻可行且不会违反容量限制〕,当运用有容量限制 的队列时,此方法通常要优于add(E),后者能够无法插 入元素,而只是抛出一个异常。
Comparator接口中定义了两个方法:
① int compare(T o1,T o2):对两个参数进展比较, 假设o1小于o2,前往一个负数;假设o1大于o2,前往一 个正数;假设o1等于o2,前往0。
② boolean equals(Object obj):假设obj也是一个比 较器,那么比较obj与此比较器能否相等,假设相等前往 true。
Java集合框架中常用的Collection有三种: Set〔规那么集〕、List〔线性表〕和Queue〔队 列〕。Set的实例用于存储一组不反复的元素, List的实例用于存储一个由元素构成的有序集合 ,而Queue的实例用于存储运用先进先出方式处 置的对象。
23.2.1 Set〔规那么集〕
Set接口扩展了Collection接口,它并没有引入新的 方法或常量,只是规定了Set的实例不能包含反复的元素 。实现Set接口的详细类必需确保没有向其添加反复的元 素。
常用的实现Set接口的类有三个,分别为:HashSet〔散 列集〕、LinkedHashSet〔链式散列集〕和TreeSet〔树 形集〕。
〔1〕HashSet〔散列集〕
HashSet可以用来存储互不一样的任何元素。
〔2〕LinkedHashSet〔链式散列集〕
LinkedHashSet是HashSet的子类,它运用链表扩展 了HashSet类。LinkedHashSet中的元素是有序的,其顺 序为插入
② E removeFirst():获取并移除此双端队列第一个元 素。
③ void addLast(E e):将指定元素插入此双端队列的 末尾〔假设可以直接这样做而不违反容量限制〕。
④ E removeLast():获取并移除此双端队列的最后一个 元素。
⑤ E getFirst():获取,但不移除此双端队列的第一个 元素。
第23讲集合
数组可以用来保管一组数据,但数组的大小一旦 定义就不能改动。运用数据类存储根本数据类型 时非常有效,可以定义对象数组来存储一组对象 ,但有时并不能确定究竟要存储多少个对象。为 此,Java适用类库提供了一套容器类来处理这个 问题。
第23讲集合
• 23.1 集合框架 • 23.2 Collection • 23.2.1 Set〔规那么集〕 • 23.2.3 List〔线性表〕 • 23.3 Map
此队列的头 是按指定排序方式确定的最小元素。假 设多个元素都是最小值,那么头是其中一个元素——选 择方法是恣意的。队列获取操作poll、remove、peek 和 element访问处于队列头的元素。
23.3 Map
Map是一种按照键值来存储元素的容器,键值与 List的下标类似,但List中的下标是整数,而键值可以 是恣意的数据类型的对象。键值不能反复,每个键值对 应一个值,他们一一对应。有三种常用详细类实现了Map : 〔1〕HashMap
〔3〕TreeMap
TreeMap在遍历排序好的键值时非常高效。键值可以 运用Comparable接口或Comparator接口进展排序,当然 要选择不同的构造方法。
讲后练习
1、编写程序,读取文本文件,将其中不反复的单词按照 升序显示。 2、编写程序,读取恣意一个Java源文件,计算该文件中 的关键字个数。 3、编写程序,读取恣意一个文本文件,并统计该文本文 件中单词的出现频率。
〔3〕TreeSet〔树形集〕
SortedSet接口为Set的子接口,它确保了Set中的元 素是有序的,这些元素按自然顺序进展排序或者按照创 建Set时所指定的Comparator 进展排序。方法first、 last、headSet和tailSet分别前往规那么集中的第一个 元素、最后一个元素、小于给定元素和大于等于给定元 素的元素顺序。
〔2〕运用Comparator〔比较器接口〕。
有些类没有实现Comparable接口,或者虽然实现了 Comparable接口但不想运用compareTo方法进展比较,这 时可以为规那么集中的元素指定一个比较器,此比较器 为实现了Comparator接口的类所创建的对象。规那么集 中的元素按照比较器中规定的顺序进展排序。
在HashMap中定位一个值,向其插入一个键值对以及 删除一个键值对时非常高效。 〔2〕LinkedHashMap 运用链表扩展了HashMap,HashMap不支持排序,而
LinkedHashMap添加了排序功能。运用 LinkedHashMap构建Map时的构造方法不同,排序方式也 不同。无参构造方法创建的LinkedHashMap对象是按照插 入顺序对键值进展排序的,而有参构造方法 LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder)是按访问顺序对键 值进展排序的。
23.1 集合框架
• Java容器类的作用是用来“保管对象〞,是可 变长的对象数组,其可分为两种类型:
• 〔1〕Collection〔称为集合〕:一个独立元 素的序列。
• 〔2〕Map〔称为映射表或图〕:一组成对的“ 键/值〞对象。
• 图23.1为Java集合框架的承继关系图。
23.2 Collection
ArrayList采用数组来存储元素,但数组是动态创建 的,当ArrayList中的元素个数超越出了数组的容量时, 就创建一个更大的新数组,把当前数组中的元素全部复 制到这个新数组中,所以,ArrayList在随机访问元素时 效率很高。
〔2〕LinkedList〔链式线性表〕
LinkedList运用链表来存储元素,所以, LinkedList在添加删除元素时效率很高。
23.2.4 Queue〔队列〕
队列是一种先进先出的数据构造,在队头删除元素 ,在队尾添加元素。而在优先队列中,元素可以被赋予 优先级,优先级高的元素首先被删除。 〔1〕Deque〔双端队列〕和LinkedList〔链表〕 Deque是双端队列,支持在队列的两端添加和删除元素。 而LinkedList实现了Deque,可以运用LinkedList创建一 个队列或双向队列。 Queue接口中定义了如下方法来实现队列元素的访问:
向TreeSet中添加的对象是可以相互比较的,而常用 的比较对象的方式有两种: 〔1〕运用Comparable接口。 这种方法用于运用实现了Comparable接口的类所创建对 象的比较,Comparable接口中定义了compareTo方法,这 种方法定义的顺序为自然顺序。Java中API中的许多类都 实现了Comparable接口,如:由于String类实现了 Comparable接口,所以在TestTreeSet.java中String类 的实例可以存储到TreeSet中,并按自然顺序排序。
④ E peek():获取但不移除此队列的头;假设此队列为 空,那么前往null。
⑤ E poll():获取并移除此队列的头,假设此队列为空 ,那么前往null。
⑥ E remove():获取并移除此队列的头。
而Deque中添加了如下方法〔只列出了部分方法〕,以实 现双端队列中元素的访问:
① void addFirst(E e):将指定元素插入此双端队列的 开头〔假设可以直接这样做而不违反容量限制〕。
⑥ E getLast():获取,但不移除此双端队列的最后一 个元素。
〔2〕PriorityQueue〔优先队列〕
PriorityQueue类是一个优先队列,优先级队列的元 素按照其自然顺序进展排序,或者根据构造队列时提供 的Comparator进展排序,详细取决于所运用的构造方法 。优先级队列不允许运用null元素。依托自然顺序的优 先级队列还不允许插入不可比较的对象〔这样做能够导 致ClassCastException异常〕。
sNavigableSet接口扩展了SortedSet接口,添加了 导航方法。方法 lower、floor、ceiling 和 higher 分 别前往小于、小于等于、大于等于、大于给定元素的元 素,假设元素不存在,那么前往 null。也可以按升序或 降序访问和遍历 NavigableSet。
23.2.2 Comparator〔比较器接口〕
相关文档
最新文档