Я пытался использовать набор.поэтому я попытался таким образом
HashSet set=new HashSet();
Points p1 = new Points(10, 20);
Points p2 = new Points(10, 20);
System.out.println(set.add(p1)); // output true
System.out.println(set.add(p2)); // output false
Я знаю, что мой первый вывод будет верным, а второй будет ложным, так как Set не допустит дублирования элементов.И я также знаю, что Set добиться этого с помощью метода equals (Object o).Который происходит из класса Java объекта со следующей подписью.
public boolean equals(Object o) {}
Для тестирования этого немного глубже я написал свой собственный класс
class testSet{
private int x;
private int y;
public testSet(int xa, int ya){
this.x=xa;
this.y=ya;
}
@Override
public boolean equals(Object o){
if (o instanceof testSet){
testSet ts=(testSet)o;
return ts.x==this.x && ts.y==this.y;
}
return false;
}
}
Теперь я ожидаю, что следующий код будет вести себя так же, как класс Point
HashSet set=new HashSet();
testSet set_a=new testSet(3,4);
testSet set_b=new testSet(3,4);
System.out.println(set.add(set_a)); //output expected true
System.out.println(set.add(set_b)); //output expected false
Поэтому я ожидаю, что первый вывод будет истинным, а второй ложным.Но это всегда возвращает истину для обоих случаев.Но работал на класс Point.И я попробовал следующие две реализации Point
android.graphics.Point
java.awt.point
Так что я сделал не так?Спасибо за помощь, ребята.