一下内容来自<阿里巴巴JAVA开发手册>(描述非常简陋,日后会详细补充)
- 【强制】 关于 hashCode 和 equals 的处理,遵循如下规则:
1) 只要重写 equals,就必须重写 hashCode,
2) 因为 Set 存储的是不重复的对象,依据 hashCode 和 equals 进行判断,所以 Set 存储的对象必须重写这两个方法。
3) 如果自定义对象做为 Map 的键,那么必须重写 hashCode 和 equals。 - 【强制】 ArrayList的subList结果不可强转成ArrayList,否则会抛出ClassCastException 异常:
- 【强制】 在 subList 场景中, 高度注意对原集合元素个数的修改,会导致子列表的遍历、增加、删除均产生 ConcurrentModificationException 异常
- 【强制】使用集合转数组的方法,必须使用集合的 toArray(T[] array)
- 【强制】泛型通配符
<? extends T>
来接收返回的数据,此写法的泛型集合不能使用 add 方法。 - 【强制】不要在 foreach 循环里进行元素的 remove/add 操作。 remove 元素请使用 Iterator
方式,如果并发操作,需要对 Iterator 对象加锁。 - 【强制】 在 JDK7 版本以上, Comparator 要满足自反性,传递性,对称性,不然 Arrays.sort,
Collections.sort 会报 IllegalArgumentException 异常。 - 【推荐】集合初始化时,尽量指定集合初始值大小。说明: ArrayList 尽量使用 ArrayList(int initialCapacity) 初始化。
- 【推荐】高度注意 Map 类集合 K/V 能不能存储 null 值的情况,
- 【参考】利用 Set 元素唯一的特性,可以快速对一个集合进行去重操作,避免使用 List 的
contains 方法进行遍历、对比、 去重操作。 - 【参考】合理利用好集合的有序性(sort)和稳定性(order),避免集合的无序性(unsort)和
不稳定性(unorder)带来的负面影响。