20145213《Java程序设计》第五周学习总结补充
20145213《Java程序设计》第五周学习总结补充
教材学习内容总结
欠的账都是要还的!第九章的内容躲过对酒当歌的夜,躲不过四下无人的街。由于第五周贪玩,疏忽冷落了Collection与Map,那么现在我就来温习一下吧!
- 认识Collection架构
- 针对收集对象的需求,Java SE提供了Collection API。
Collection
包含了收集对象的共同行为,然而收集对象会有不同的需求。 - 利用
java.util.List
接口可以在收集对象时记录每个对象的索引顺序,并可依索引取回对象。 - 利用
java.util.Set
接口可以使收集的对象不重复,具有集合行为。 - 利用
java.util.Queue
接口可以在收集对象时以队列方式,收集的对象加入至尾端,取得对象时从前端。如果希望对Queue
的两端进行加入,移除等操作时,
则可以使用java.util.Deque
java.util.List
含有两个子类ArrayList
与LinkedList
。ArrayList
使用数组保存收集的对象,数组在内存中会是连续的线性空间,根据索引随机存取时速度快,像是排序,使用ArrayList
会有较好的速度表现。LinkedList
在操作接口时,采用链接结构,若收集的对象经常有变动索引的情况,采用LinkedList
会有较高效率java.util.Set ``````有两个子类,分别是
HashSet与
TreeSet.
java.util.Set接口利用对象的
hashCode()与
equals() ```判断收集的对象是否不重复Queue
继承自Collection
,所以也具有add()
,remove
,element()
等方法,然而Queue
定义了自己的offer()
,poll
,peek
等方法,最主要差别是add()
,remove
,element()
等方法操作失败时会抛出异常,而offer()
,poll
,peek
等方法操作失败时会返回特定的值。offer()
方法用来在队列后端加入对象,成功会返回True,失败会返回falsepoll()
方法用来取出队列前端对象,若队列为空,返回nullpeek()
用来取得(但不取出)队列前端对象,若队列为空,返回null- 无论
List
,Set
还是Queue
都会有个iterator()
方法,iterator()
方法会返回java.util.Iterator
操作对象,可以让你注意取得收集的对象。 - 接口只有一个方法必须操作时,在JDK8中可以使用
Lambda
,细节是如果在Lambda
表达式中使用区块是,如果方法必须返回值,在区块中必需使用return,如果没使用区块,return省略 java.util.Collections
提供sort
方法,由于必须有索引才能进行排序,因此sort
方法接受List
操作对象。java.util.Collections
的sort
方法要求被排序的对象必须操作java.lang.Comparable
接口。但你的对象无法操作java.lang.Comparable
时,java.util.Collections
的sort
方法有另一个重载版本,可接受java.util.Comparator
接口操作的对象,如果使用这个版本,排序方式将根据Comparator
的compare
定义决定。
- 常用Map操作类
- 常用的
Map
操作类为java.util.HashMap
与java.util.TreeMap ````.在
HashMap中建立键值对应之后,键是无序的。在
TreeMap中建立键值,键是有序的。值得注意的是作为键的对象,必须操作
Comparable,或者在创建时指定操作
Comparator ```接口的对象 - 如果想取得
Map
中所有的键,可以调用Map
的keyset()
返回Set
对象。 - 如果想取得
Map
中所有的值,可以使用Value
返回Collection
对象。 - 如果想同时取得
Map
中所有的键与值,可以使用entrySet()
方法,这会返回一个Set
对象,每个元素都是Map.Entry
的实例,可以调用getKey()取得键,调用
getValue ```取得值。