关于java中hashCode与equals为什么一起重写的问题

java中当hashCode与equals的一同重写主要是为了提高效率,出现在集合中。我们都知道hashSet中是不能 出现相同的元素的,那么实现它的这个方法就是通过equals方法进行比较,然而这样的效率并不高,因为假如我们存入很多元素,而在插入元素时将有很多次的比较,这显然效率不高。而有了hashCode之后,元素在进行比较时先看看由hashCode计算出来的地址中是否有元素,没有则直接存入,有则进行比较之后再存入!这样只要比较最多两次,效率提高!

还有就是hashCode相同的equals一定相同,equals相同的hashCode不一定相同。中的2个方法比较的都是Object地址值是否相同,所以元素不会出现在同一地址,而重写后的则不一定。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章