如何从arraylist中过滤唯一对象。
List<LabelValue> uniqueCityListBasedState = new ArrayList<LabelValue>();
for (LabelValue city : cityListBasedState) {
if (!uniqueCityListBasedState.contains(city)) {
uniqueCityListBasedState.add(city);
}
}
这是我的代码。但问题是我不需要过滤对象,而是过滤该对象内属性的值。在这种情况下,我需要排除具有名称的对象。
那是city.getName()
答案 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)
答案 2 :(得分:2)
覆盖equals()
的{{1}}和hashCode()
方法(在这种情况下LabelValue
不是必须的):
hashCode
答案 3 :(得分:1)
这是解决问题的一种方法。
您应该覆盖LabelValue的equals()
方法和hashCode()
。
equals()
方法应该使用name
属性,hashCode()
方法应该使用。
然后你的代码就可以了。
PS。我假设您的LabelValue对象只能使用name属性进行区分,而这正是您根据自己的问题所需要的。