集合处理
-
hashcode与equals
i. 只要重写equals,
必须
重写hashcodeii. 使用set存储的类,
必须
重写hashcode和equalsiii. 使用自定义对象作为Map的键,
必须
重写hashcode和equals -
ArrayList的subList结果
不可以
强转ArrayList,原集合的元素增加删除均会对子列表的遍历、增加、删除产生异常 -
使用集合转数组,
必须
使用toArray(T[] array),传入的是类型完全一样的数组,大小就是list.size() -
使用工具类Arrays.asList()把数组转为集合时,
不能
使用修改集合的方法(add remove clear) -
泛型通配符<? extends T>来接收的数据,不能使用add方法。使用<? super T>接收的数据不能使用get方法。所以,频繁读取的
使用
<? extends T>,频繁插入的使用
<? super T> -
在foreach中
禁止
remove和add操作,remove需要
使用Iterator,如果并发,需要
对Iterator加锁
-
Comparator
需要
满足以下条件:x,y的比较结果与y, x的比较结果相反
x > y, y > z,则x > z
x = y, 则比较x, z的结果与y, z的结果相同
-
推荐
在泛型集合定义时,使用diamond格式
-
建议
在集合初始化时,指定大小。Capacity = (存储个数/负载因子) + 1,若不明确,请设置16 -
建议
使用EntrySet而不是KeySet对Map集合进行遍历 -
Map集合空值问题
-
合理利用
集合的有序性和稳定性 -
利用Set的唯一性可以实现快速去重,
避免
List的contains方法