Java HashSet不';不要拒绝第二次添加呼叫
我刚刚开始收集,我已经编写了代码来测试Java HashSet不';不要拒绝第二次添加呼叫,java,collections,hashset,Java,Collections,Hashset,我刚刚开始收集,我已经编写了代码来测试HashSet 下面是代码(Person.java): 实现类,只是一个简单的类: import java.util.*; class HashSetTest { public static void main(String[] args) { Set<Person> set=new HashSet<Person>(); Person p1=new Person(6); Person p2=new P
HashSet
下面是代码(Person.java):
实现类,只是一个简单的类:
import java.util.*;
class HashSetTest
{
public static void main(String[] args)
{
Set<Person> set=new HashSet<Person>();
Person p1=new Person(6);
Person p2=new Person(6);
System.out.println(set.add(p1));
System.out.println(set.add(p2));
}
}
import java.util.*;
类HashSetTest
{
公共静态void main(字符串[]args)
{
Set=newhashset();
人员p1=新人员(6);
人员p2=新人员(6);
系统输出打印LN(设置添加(p1));
System.out.println(set.add(p2));
}
}
如果我没有错,那么第二个
System.out.println
语句应该返回false
,因为它不应该添加重复的元素,而是返回true。当元素匹配时,Person.equals
方法似乎返回false
应该是
if (this.id==p.id)
return true;
else
return false;
当元素匹配时,
Person.equals
方法似乎返回false
应该是
if (this.id==p.id)
return true;
else
return false;
您的
equals
方法有问题。当id相同时,它返回false
。您的equals
方法有问题。当id相同时,它返回false
。或只返回this.id==p.id代码>感谢它的工作…当一个人调用equals时,一个问题可能是非常愚蠢的,而hashocde发生在我没有编写任何调用的时候it@Deepak_Sharma:查看HashSet
的源代码并遵循控制流。或者只返回this.id==p.id代码>感谢它的工作…当一个人调用equals时,一个问题可能是非常愚蠢的,而hashocde发生在我没有编写任何调用的时候it@Deepak_Sharma:查看HashSet
的源代码并遵循控制流。