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 未获支持的操作