为什么需要HashCode()
使用hashcode方法提前校验,可以避免每一次比对都调用equals方法,提高效率
例如 HashSet是具有不可重复性的,每次往里面添加数据时,都会先计算该数据的 哈希值(即在哈希表中的存放位置),然后与set中已经存在的数据的 哈希值进行比较,如果都不同则添加在计算出的位置进行添加,如果相同则调用 equals方法进行判断,相同则不添加,不相同则散列到其他位置添加。
因为不同对象出现 哈希值相同的概率是比较低的,所以重写了 hashcode方法可以减少 equals方法的调用,提高效率。
为什么HashCode()有了还需equals()
HashCode值一致对象不一定一致。
对象一致HashCode值一定一致。