2012-06-08 3 views
0

Я занимаюсь разработкой приложений, у которых много ArraYlists, и ему нужно сравнить их с данными списка. Когда я пытаюсь использовать этот метод fdata.contains(data2), он всегда возвращает false. ArayLists содержит класс с именем «favdat», который выглядит следующим образом: `если ArrayList содержит не работает

public class favdat { 
    public String product,term,note,link; 
} 

И Data2 определяются следующим образом: favdat Data2=new favdat(); Я также судимым сохранить весь метод и возвращает список в размере 0. Я знаю, что некоторые данные равны.

Итак, вопрос в том, как я могу узнать, содержит ли fdatadata2?

ответ

8

Реализация по умолчанию для сравнения объектов - это сравнение, если они являются одним и тем же объектом, поэтому два объекта с точно такими же атрибутами все равно не будут равны. Что вам нужно сделать, это переопределить значение hashCode и равно методов. В качестве примера:

public int hashCode() { 
    return product.hashCode() * 31 + term.hashCode(); 
} 

public boolean equals(Object o) { 
    if (o instanceof favdata) { 
     favdata other = (favdata) o; 
     return product.equals(other.product) 
      && term.equals(other.term) 
      && note.equals(other.note) 
      && link.equals(other.link); 
    } else { 
     return false; 
    } 
} 

В Java, как правило, названий класса началась с капителями, так что было бы Favdat, и ваш код, как правило, становится легче читать, чтобы держать в поле декларации отделиться.

+0

Thank you man !! Вы - спасатель жизни, я был застрял в этой проблеме со вчерашнего дня! – J1and1

Смежные вопросы