7. 同时需要覆写 hashCode和equals方法
说明:这个也是大家偶尔会忽视的一个问题。hashCode和equlas方法最主要的用途是在基本Hash算法的集合类中,如HashMap,等。
在HashMap实现中,其对一个对方是否相等的判断逻辑如下:
也就是说在HashMap中如果两个对象相等必须是hashCode相等并且equals方法也返回相等。
那如果在一个对象中,只复写了equals,而未复写hashCode方法,就会造成”重复”的对象在HashSet中也会发生。
下面是一个有问题的示例代码:
8. BigDecimal对象初始化时,针对浮点数据值使用String参数(针对精度问题)
说明:例如 new BigDecimal(0.1) 值真正的值可能是 .1000000000000000055511151231257827021181583404541015625
Good Luck!
Yours Matthew!