HashSet似乎没有意识到两个对象是相同的。
我正在尝试使用 HashSet 来存储我创建的类的对象,但显然相同的对象似乎有两个不同的哈希值,这就是为什么 contains 方法没有意识到该对象已经在 HashSet 中的原因。这导致我的程序用完了堆内存。
我不认为我做错了什么,但无论如何,我想要第二种意见。我之前做过类似的操作,一切都工作正常,这使得这特别烦人。我将不胜感激任何帮助。
这是我的代码
move1 = new Move(t,s);
if(move1.hashCode()==new Move(t,s).hashCode())
System.out.println("match");
move2 = new Move(s,t);
moves.add(move1);
moves.add(move2);
if(moves.contains(new Move(t,s)))
System.out.println("match found");
下面是 Move 类:
public class Move {
private int move1;
private int move2;
Move(int m1, int m2)
{
move1 = m1;
move2 = m2;
}
public String toString()
{
return String.valueOf(move1)+" "+String.valueOf(move2);
}
}
这是我得到的输出
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.HashMap.addEntry(HashMap.java:797)
at java.util.HashMap.put(HashMap.java:431)
at java.util.HashSet.add(HashSet.java:194)
at makeMove.<init>(makeMove.java:33)