请问java hashCode() 和return的用法。

importjava.util.*;publicclassHasSetTest{publicstaticvoidsop(Objectobj){System.out.pri... import java.util.*;

public class HasSetTest {
public static void sop(Object obj)
{
System.out.println(obj);
}

public static void main(String[] args) {
// TODO 自动生成的方法存根
HashSet hs=new HashSet();
hs.add(new Person("a1",11));
hs.add(new Person("a2",12));
hs.add(new Person("a3",13));
hs.add(new Person("a3",13));
hs.add(new Person("a4",14));
hs.add(new Person("a5",15));

Iterator it=hs.iterator();

while(it.hasNext())
{
Person p=(Person)it.next();
sop(p.getName()+"***"+p.getAge());
}
}

}
class Person
{
private String name;
private int age;
Person (String name,int age)
{
this.name=name;
this.age=age;
}
public int hashCode()
{
return 60;
}
public boolean equals(Object obj)
{
if(!(obj instanceof Person))
return false;
Person p=(Person)obj;
return (this.name).equals(p.name)&&this.age==p.age;

}

public String getName ()
{
return name;
}
public int getAge()
{
return age;
}
}

请问:
public int hashCode()
{
return 60;
}
是怎样实现输出的Person不重复的?
展开
 我来答
舞蔗
2016-05-08 · TA获得超过192个赞
知道小有建树答主
回答量:247
采纳率:0%
帮助的人:120万
展开全部
这里重写了equals方法,并没有使用hashcode,所以这里返回60并没有影响。
equals语句中比较了name还有age所以不会重复
追问
但是如果没有hashcode,输出是会重复的
追答
hashSet重写equals方法必须重写hashCode。
主要原因是默认从Object继承来的hashCode是基于对象的ID实现的。
如果你重载了equals,比如说是基于对象的内容实现的,而保留hashCode的实现不变,那么很可能某两个对象明明是“相等”,而hashCode却不一样。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式