2014-11-17 3 views
3

У меня есть список объектов:проверка Java, если список объектов содержит объект с бетонным именем

List<City> cities = city.getList(); 

Я хотел бы, чтобы удалить дубликаты (где дублирует означают объекты с одинаковым значением параметра name и разные (id, и другие параметры);

у меня есть код, который:

for(City c: cities) { 
    System.out.println("analise " + c.name); 
    if(!temp.contains(c)) { 
     temp.add(c); 
    } 
} 

Я написал для этого хэш-код() и равенства() метод:

@Override 
public int hashCode() { 
    return id.hashCode(); 
} 

...

@Override 
    public boolean equals(Object other) { 
     if (other == null) return false; 
     if (other == this) return true; 
     if (!(other instanceof GenericDictionary))return false; 
     GenericDictionary otherMyClass = (GenericDictionary) other; 
     if(this.name == otherMyClass.name) { 
      return true; 
     } else { 
      return false; 
     } 
    } 

Но dosnt применить его. Он использует Object.equals() метод вместо моего

+0

Вам не нужно переопределить хэш-код для arraylist. –

ответ

5

Похоже, ваша проблема в сравнении строк:

if(this.name == otherMyClass.name) 

изменить его на:

if(this.name.equals(otherMyClass.name)) 
+1

или просто 'return name.equals (otherMyClass.name);' – vikingsteve

+0

Он работает. : D Спасибо. Теперь я вижу свою ошибку в строчном сравнении: D – masterdany88

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