代码规范 : 集合处理

来源:互联网 发布:美工电脑是什么意思 编辑:程序博客网 时间:2024/06/05 22:30

一下内容来自<阿里巴巴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)带来的负面影响。
原创粉丝点击