你必须继承hashCode和equals方法,否则hashset无法判断两个对象是否相等
而且你需要保证a.equals(b)的时候,a.hashCode() == b.hashCode(),在这个前提下尽量使到a.hashCode != c.hashCode();
而且你需要保证a.equals(b)的时候,a.hashCode() == b.hashCode(),在这个前提下尽量使到a.hashCode != c.hashCode();
a.equals(b)且a.hashCode() == b.hashCode()
问什么还有两个呢?
而且hashCode通常运算速度比较快,所以其实在判断两个对象是否相等之前会先判断hashCode来提高效率
我的意思:我现在已经实现了hashCode和quals,并且都返回固定值。这样两个对象就应该始终一样的。hashSet中的数据就就应该是一个。为什么我的有两个?
那我因该怎么办?用自己的类放到一个集合中。如果集合中有相同的类(a.equals(b)为true)就不用放!集合类不回不能现在这个功能吧?不会要自己学程序吧??
你应该写
public boolean equals(Object obj) {
return true;
}