代码编写规范

集合处理

  1. 【强制】关于hashCode和equals的处理,遵循如下规则:
    (1)只要重写equals,就必须重写hashCode。
    (2)因为Set存储的是不重复的对象,依据hashCode和equals进行判断,所以Set存储的对象必须重写这两个方法。
    (3)如何自定义对象作为Map的键,那么必须覆写hashCode和equals。
    说明:String因为重写了hashCode和equals方法,所以我们可以使用String对象作为key来使用。

  2. 【强制】判断所有集合内部的元素是否为空,使用isEmpty()方法,而不是size()==0的方式。
    说明:前者的时间复杂度为O(1),而且可读性更好。
    正例:

Map<String,Object> map = new HashMap<>();
if(map.isEmpty()){
	System.out.println("no element in this map.");
}
  1. 【强制】在使用java.util.stream.Collectors类的toMap()方法转为Map集合时,一定要使用含有参数类型的BinaryOperator,参数名为mergeFunction的方法,否则当出现相同key值时会抛出IllegalStateException异常。
  2. 【强制】在使用java.util.stream.Collectors类的toMap()方法转为Map集合时,一定要注意为value为null时会抛出NPE异常。
  3. 【强制】ArrayList的subList结果不可强转为ArrayList,否则会抛出ClassCastException异常。
  4. 【强制】使用Map的方法keySet()/values()/entrySet()返回集合对象时,不可以对其进行添加元素操作,否则会抛出UnsupportedOperationException异常。
  5. 【强制】COllections类返回的对象,如:emptyList()/singletonList()等都是immutablelist,不可对其进行添加或者删除元素的操作。
  6. 【强制】在subList场景中,高度注意对父集合元素的增加或者删除,均会导致子列表的遍历、增加、删除产生ConcurrentModificationException异常。
  7. 【强制】使用集合转数组的方法,必须使用集合的toArray(T[] array),传入的是类型完全一直、长度为0的空数组。
  8. 【强制】在使用Collection接口任何实现类的addAll()方法时,都要对输入的集合参数进行NPE判断。
  9. 【强制】使用工具类Arrays.asList()把数组转换为集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedOperationException异常。
  10. 【强制】泛型通配符<? extends T>来接收返回的数据,此写法的泛型集合不能使用add方法,而<? super T>不能使用get方法,两者在接口调用赋值的场景中容易出错。
  11. 【强制】在无泛型限制定义的集合赋值给泛型限制的集合时,在使用集合元素时,需要进行instanceof判断,避免抛出ClassCastException异常。
  12. 【强制】不要在foreach循环里进行元素的remove/add操作。remove元素请使用Iterator方式,如果并发操作,需要对Iterator【】对象加锁。
  13. 【强制】在JKD7版本及以上,Comparator实现类要满足如下三个条件,不然Arrays.sort,Collections.sort会抛出IllegalArgumentException异常。
    说明:三个条件如下
    (1)x,y的比较结构和y,x的比较结果相反。
    (2)x>y,y>2,则x>z。
    (3)x=y,则想,z比较结果和y,z比较结果相同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值