Problem z „zawiera” metodę skrótu (Java)

Poniższy kod nie daje mi oczekiwanego rezultatu:

public static void main (String[] args) {

    Set<Pair> objPair = new LinkedHashSet<Pair>();
    objPair.add(new Pair(1, 0));

    System.out.println("Does the pair (1, 0) exists already? "+objPair.contains(new Pair(1, 0)));

}

private static class Pair {

    private int source;
    private int target;

    public Pair(int source, int target) {
      this.source = source;
      this.target = target;
    }        
}

Rezultatem będzie:

Does the pair (1, 0) exists already? false

Nie mogę zrozumieć, dlaczego to nie działa. A może źle wykorzystuję metodę „zawiera” (lub z niewłaściwych powodów).

Jest jeszcze inny problem, jeśli dodam tę samą wartość dwa razy, zostanie ona zaakceptowana, nawet jako zestaw

objPair.add(new Pair(1, 0));
objPair.add(new Pair(1, 0));

Nie zaakceptuje / nie rozpozna klasy, którą stworzyłem?

Z góry dziękuję.

questionAnswers(2)

yourAnswerToTheQuestion