java检查对象列表是否包含具体名称的对象

时间:2014-11-17 09:17:54

标签: java list object equals hashcode

我有对象列表:

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

我想删除重复项(其中重复项表示具有相同参数name和不同(id的值的对象,以及其他参数);

我有代码:

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

我已经为hashCode()和equals()方法写了:

@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;
        }
    }

但它适用它。它使用object.equals()方法代替我的

1 个答案:

答案 0 :(得分:5)

看起来您的问题出在字符串比较中:

if(this.name == otherMyClass.name)

将其更改为:

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