目录:
Java编程思想(一)第1~13、16章
Java编程思想(二)第14章-类型信息
Java编程思想(三)第15章-泛型
Java编程思想(四)第17章-容器深入研究
Java编程思想(五)第18章-Java IO系统
Java编程思想(六)第19章-枚举类型
Java编程思想(七)第20章-注解
Java编程思想(八)第21章-并发
1 Set和存储顺序
- 加入
Set
的元素必须定义equals()
方法以确保对象的唯一性。 hashCode()
只有这个类被置于HashSet
或者LinkedHashSet
中时才是必需的。但是对于良好的编程风格而言,你应该在覆盖equals()方法时,总是同时覆盖hashCode()方法。- 如果一个对象被用于任何种类的排序容器中,例如
SortedSet
(TreeSet
是其唯一实现),那么它必须实现Comparable
接口。 - 注意,
SortedSet
的意思是“按对象的比较函数对元素排序”,而不是指“元素插入的次序”。插入顺序用LinkedHashSet
来保存。
2 队列
- 队了并发应用,Queue在Java SE5中仅有的两个实现是
LinkiedList
和PriorityQueue
,它们仅有排序行为的差异,性能上没有差异。 - 优先级队列
PriorityQueue
的排列顺序也是通过实现Comparable
而进行控制的。
3 Map
映射表(也称为关联数组Associative Array)。
3.1 性能
HashMap
使用了特殊的值,称作散列码(hash code),来取代对键的缓慢搜索。散列码是“相对唯一”的、用以代表对象的int
值,它是通过将该对象的某些信息进行转换而生成的。
hashCode()是根类Object中的方法,因此所有对象都能产生散列码。
对Map中使用的键的要求与对Set中的元素的要求一样:
- 任何键都必须具有一个
equals()
方法; - 如果键被用