У меня есть класс объекта с именем Record
, который состоит из вектора Data
Объекты класса. Класс объекта Data
содержит только две переменные
Object value;
String name;
Я переопределяю метод equals в Record
class следующим образом:
public boolean equals(Object obj) {
boolean check = true;
for(int i=0; i<this.coloumnsOfData.size();i++) {
System.out.println( ((Record) obj).coloumnsOfData.get(i).name + " OBJECT " + ((Record) obj).coloumnsOfData.get(i).value );
System.out.println( coloumnsOfData.get(i).name + " THIS " + coloumnsOfData.get(i).value );
if( !((((Record) obj).coloumnsOfData.get(i).name).equals(this.coloumnsOfData.get(i).name)) || !((((Record) obj).coloumnsOfData.get(i).value).equals(this.coloumnsOfData.get(i).value))) {
check=false;
}
}
return (obj instanceof Record && check);
}
Я инициализирую HashSet следующим образом: Set<Record> answer= new HashSet<Record>()
и начинаю тестирование
Record r1 = new Record();
r1.coloumnsOfData.add(new Data(new Double( 1.5 ),"gpa"));
r1.coloumnsOfData.add(new Data(new String("John"),"name"));
r1.coloumnsOfData.add(new Data(new Integer( 2 ),"id"));
Record r2 = new Record();
r2.coloumnsOfData.add(new Data(new Double( 1.5 ),"gpa"));
r2.coloumnsOfData.add(new Data(new String("John"),"name"));
r2.coloumnsOfData.add(new Data(new Integer( 2 ),"id"));
System.out.println(r1.equals(r2)); //RETURNS TRUE
answer.add(r1);
System.out.println(answer.contains(r2)); //RETURNS FALSE
Любая помощь, понимающая, где проблема, будет принята с благодарностью.