第十一章 对象的集合

11.1 数组

在Java中,数组是一种效率最高的存储和随机访问对象引用序列的方式。

Arrays.sort()方法可以实现数组的排序。Java有两种方式来提供比较功能。第一种是实现java.lang.Comprarble接口,实现compareTo()方法。第二种使用策略模式,定义一个实现了Comparotor接口的策略类。


11.2 容器简介

1)Collection。一组独立的元素,通常这些元素都服从某种规则。List必须保持元素特定的顺序,而Set不能有重复元素。

2)Map。一组成对的“键值对”对象。

如果添加元素的顺序对你很重要,应该使用LinkedHashSet或者LinkedHashMap。


11.4 迭代器

11.5 容器的分类法

11.6Collection的功能和方法

Set和List


11.7 List的功能方法

List实际上有两种类型:一种是基本的ArrayList,其优点在于随机访问元素;另一种是更强大的LinkedList,它并不是针对快速随机访问而设计的,而是具有一套更通用的方法。

11.8 Set的功能方法

HashSet 为快速查找而设计的Set。存入HashSet的对象必须定义hashCode()

TreeSet 保持次序的Set,底层为树结构。使用它可以从Set中提取有序的序列。

LinkedHashSet 具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示


11.9 Map的功能方法

HashMao : Map基于散列表的实现(它取代了HashTable)。插入和查询“键值对”的开销是固定的,可以通过构造器设置容量和负载因子,以调整容器的性能

LinkedHashMap 类似于HashMap,但是迭代遍历它时,取得“键值对”的顺序是其插入次序,或者是最近最少使用(LRU)的次序。只比HashMap慢一点;而在迭代访问时反而更快,因为它使用链表维护内部次序。

TreeMap 基于红黑树的实现。查看“键”或“键值对”时,它们会被排序(次序由Comparable或Comparator决定)。TreeMap的特点在于,所得到的结果是经过排序的,TreeMap是唯一的带有subMap()方法的Map,它可以返回一个子树

WeakHashMap :弱键映射,允许释放映射所指向的对象。

IdentityHashMap: 使用==代替equals()对“键”进行比较的散列映射。专为解决特殊问题而设计的。

hashCode()必须基于对象的内容生成散列码,散列码不必是独一无二的。


11.10 持有引用

Reference类

11.11 再论迭代器

11.12 选择接口的不同实现

ArrayList底层由数组支持;而LinkedList是由双向链表实现的。

11.13 List的排序和查询

11.14 实用方法

11.15 未获支持的操作

你可能感兴趣的:(第十一章 对象的集合)