HashSet ne semblent pas réaliser que les deux objets sont les mêmes.

Je suis en train d'utiliser HashSet de stocker des objets d'une classe que j'ai créé, mais apparemment les mêmes objets semblent avoir deux tables de hachage, c'est pourquoi la méthode contains ne se rendent pas compte que l'objet est déjà dans le HashSet. Ce qui me conduit à mon programme en cours d'exécution hors de la mémoire du tas.

Je ne pense pas que je suis en train de faire quelque chose de mal, mais je voulais un deuxième avis de toute façon. J'ai fait des opérations similaires devant laquelle tout a bien fonctionné, ce qui le rend particulièrement gênant. J'apprécierais toute aide.

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

Ici est le mouvement de la classe:

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

Ici la sortie-je obtenir

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)
  • Utilisé, étant donné que l'exception est un effet secondaire du problème.