HashSet scheint nicht zu erkennen, dass zwei Objekte gleich sind.

Ich versuche, HashSet zum Speichern von Objekten einer von mir erstellten Klasse zu verwenden, aber anscheinend haben dieselben Objekte zwei unterschiedliche Hashes, weshalb die contain-Methode nicht erkennt, dass sich das Objekt bereits im HashSet befindet. Dies führt dazu, dass meinem Programm der Heapspeicher ausgeht.

Ich glaube nicht, dass ich etwas falsch mache, aber ich wollte trotzdem eine zweite Meinung. Ich habe ähnliche Operationen durchgeführt, bei denen alles gut funktioniert hat, was das besonders ärgerlich macht. Ich würde mich über jede Hilfe freuen.

Hier ist mein Code

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");

Hier ist die Move-Klasse:

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);
    }
}

Hier ist die Ausgabe, die ich bekomme

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)

Antworten auf die Frage(6)

Ihre Antwort auf die Frage