Я пытаюсь использовать 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);
}
}
Здесь вывод я получаю
Исключение в потоке "main" java.lang.OutOfMemoryError: Java heap space в java.util.HashMap.addEntry(HashMap.java:797) в java.util.HashMap.put(HashMap.java:431) в java.util.HashSet.add(HashSet.java:194) на makeMove. (makeMove.java:33)