Potrzebowałem takie coś
HashSet<Punkt> punkty;
gdzie klasa Punkt jest dość podobna do klasy standardowej Point.
Pierwsze podejście
class Punkt implements Comparable
...
public boolean equals(Object ob)
{
Punkt p=(Punkt)ob;
if(x==p.x && y==p.y)
return true;
else
return false;
}
nieudane, w kolekcji było tyle punktów ile dodałem (niektóre się powtarzały).
Drugie podejście
class Punkt extends Point implements Comparable
...
public boolean equals(Object ob)
{
Punkt p=(Punkt)ob;
if(x==p.x && y==p.y)
return true;
else
return false;
}
działą
Trzecie podejście
class Punkt extends Point implements Comparable
...
/*public boolean equals(Object ob)
{
Punkt p=(Punkt)ob;
if(x==p.x && y==p.y)
return true;
else
return false;
}* metoda equals nie została nadpisana/
kolekcja zawiera zawsze dokładnie jeden punkt.
Czym się kieruje metoda add() w klasie HashSet<E> podczas dodawania elementów? (Wg dokumentacji metodą equals() w klasie E).