在java中会有许多编码规范,这会使你在实现功能的时候避免许多坑。这里就是记录学习一个编码规范:
在业务上要判断两个对象的内容是否相等,不要自己写方法(isSame)去判断,而是应该去重写Object类的equals方法,(就像String类一样)。这个时候就能在list 中去支持 如果插入两个业务上想让其相同的对象(比如Person的name相等我就认为这两个对象相等)person1 person2,在list中插入person1,则 list.contains(person2)返回的就是true。
但是如果想要支持HashMap、HashSet、LinkedHashMap、ConcurrentHashMap这些类,不但要重写Equals方法,还要去重写hashCode方法。至于为什么就涉及到HashCode本身的一个标识作用和这些集合类中应用hashcode的具体实现。
下面是一个重写hashcode的方法,这里就是在重写的方法中去返回 当前person对象的name属性的hashcode 去作为集合类中要去使用的hashcode。希望以后在遇到这个坑的时候能够发现问题去重写hashcode方法 或者 尽量去避免这个坑。