根据包含的对象的属性值从ArrayList中过滤唯一对象

时间:2013-03-08 06:12:17

标签: java arraylist

如何从arraylist中过滤唯一对象。

List<LabelValue> uniqueCityListBasedState = new ArrayList<LabelValue>();
for (LabelValue city : cityListBasedState) {
    if (!uniqueCityListBasedState.contains(city)) {
        uniqueCityListBasedState.add(city);
    }
}

这是我的代码。但问题是我不需要过滤对象,而是过滤该对象内属性的值。在这种情况下,我需要排除具有名称的对象。

那是city.getName()

4 个答案:

答案 0 :(得分:6)

List<LabelValue> uniqueCityListBasedState = new ArrayList<LabelValue>();
        uniqueCityListBasedState.add(cityListBasedState.get(0));
        for (LabelValue city : cityListBasedState) {
            boolean flag = false;
            for (LabelValue cityUnique : uniqueCityListBasedState) {    
                if (cityUnique.getName().equals(city.getName())) {
                    flag = true;                    
                }
            }
            if(!flag)
                uniqueCityListBasedState.add(city);

        }

答案 1 :(得分:2)

假设您可以更改要设置的列表。

改为使用Set Collection

  

Set是一个不能包含重复元素的Collection。

答案 2 :(得分:2)

覆盖equals()的{​​{1}}和hashCode()方法(在这种情况下LabelValue不是必须的):

hashCode

答案 3 :(得分:1)

这是解决问题的一种方法。

您应该覆盖LabelValue的equals()方法和hashCode()

equals()方法应该使用name属性,hashCode()方法应该使用。

然后你的代码就可以了。

PS。我假设您的LabelValue对象只能使用name属性进行区分,而这正是您根据自己的问题所需要的。