Witam. Mój problem polega na tym, że nie rozumiem, dlaczego dwa obiekty Number zostają bez problemu dodane do zbioru HashSet i operacja dodawania drugiego elementu też zwraca true, jeżeli metoda equals wyraźnie informuje, że obiekty są równe. Co można na to poradzić? Z góry dziękuję za pomoc
Oto kod:
import java.util.*;
import java.io.*;
public class test2
{
public static class Number
{
String number;
public Number(String n)
{
number=new String(n);
}
public boolean equals(Object ob)
{
Number s=(Number)ob;
return s.number.startsWith(number) || number.startsWith(s.number);
}
public int hashCode()
{
return number.hashCode();
}
}
public static void main(String[] args)throws IOException
{
PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)),true);
StreamTokenizer st=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
Set<Number> set = new HashSet<Number>();
Number n1=new Number("911");
Number n2=new Number("91123");
out.println(set.add(n1));
out.println(set.add(n2));
out.println(n1.equals(n2));
}
}