关于HashSet的equals和hashcode的重写

Posted shijinglu2018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于HashSet的equals和hashcode的重写相关的知识,希望对你有一定的参考价值。


关于HashSet的equals和hashcode的重写:
package
Test; import java.util.HashSet; import java.util.Set; public class HashSetTest { public static void main(String[] args) { Set hs = new HashSet(); hs.add(new Student("张三")); hs.add(new Student("lisi")); hs.add(new Student("张三")); hs.add(new Student("lisi")); hs.stream().forEach(x -> System.out.println(x)); } } class Student { String name; public Student(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return name; } @Override public int hashCode() { return getName().hashCode(); } @Override public boolean equals(Object obj) { if (obj instanceof Student && this.name.equals(((Student) obj).getName())) { return true; } return false; } }

//说明:equals(桶中定位)和hashcode(散列分桶)要一起重写

 





以上是关于关于HashSet的equals和hashcode的重写的主要内容,如果未能解决你的问题,请参考以下文章

hashcode 和equals 及HashSet判断对象相等

总结,为什么要重写hashset的hashcode()和equals()?

Java HashSet 包含返回 false,即使重写了 equals() 和 hashCode()

hashCode equals hashSet

集合框架比较两个对象是否相同(equals和hashCode方法)

谈谈HashSet的存储原理及为什么重写equals必须重写hashcode方法