Java 编程规约【06】集合处理
1. 【强制】关于 hashCode 和 equals 的处理,遵循如下规则:
- 只要覆写 equals,就必须覆写 hashCode。
- 因为 Set 存储的是不重复的对象,依据 hashCode 和 equals 进行判断,所以 Set 存储的对象必须覆写这两种方法。
- 如果自定义对象作为 Map 的键,那么必须覆写 hashCode 和 equals。
说明:String 因为覆写了 hashCode 和 equals 方法,所以可以愉快地将 String 对象作为 key 来使用。
我的笔记:《Effective Java》告诉我们重写 hashcode
方法的最佳实践方式。
一个好的 hashcode 方法通常最好是不相等的对象产生不相等的 hash 值,理想情况下,hashcode方法应该把集合中不相等的实例均匀分布到所有可能的 hash 值上面。在企业开发中,最好使用第三方库如 Apache commons 来生成hashocde
方法。
2. 【强制】判断所有集合内部的元素是否为空,使用 isEmpty()
方法,而不是 size() == 0
的方式。
说明:在某些集合中,前者的时间复杂度为 O(1),而且可读性更好。
3.【强制】在使用 java.util.stream.Collectors 类的 toMap() 方法转为 Map 集合时,一定要使用参数类型 为 BinaryOperator,参数名为 mergeFunction 的方法,否则当出现相同 key 时会抛出 IllegalStateException 异常。