我有一个名为ResourceObject的类
public class ResourceObject
{
int id;
String Name;
int count;
}
对于本课程,我已覆盖equals
方法,以便只有id
和name
相同才能使对象相等。
现在我列出了ResourceObject
个对象List<ResourceObject> resList.
让我们说内容是
id name count
1 A 1
1 A 2
1 A 1
2 B 1
2 B 2
3 C 2
我想要做的就是找到唯一的List并增加计数。即,结果应该是
id name count
1 A 4
2 B 3
3 C 2
我该怎么做?谢谢。
答案 0 :(得分:1)
遍历List
,如果Set
不包含该元素,则将元素添加到Set
,如果Set
已经包含该元素,则获取该元素来自Set
并增加其count
。
在循环结束时,如果需要,您可以将Set
转换为List
。
答案 1 :(得分:0)
嗯,就像伪代码一样。
for(ResourceObject o : resList) {
int count = sumAllCounts(o);
saveCountAndObjectSomewhere(o, count);
}
showResults();
当然,这将为每个相等的对象显示几行,但是你可以通过将它们放在一个Set中来删除重复项。
答案 2 :(得分:0)
我在这里得到了解决方案。
List<ResourceObject>
originalList是包含原始元素的列表
List<ResourceObject> newList=new ArrayList<ResourceObject>();
for(int i=0;i<originalList.size();i++){
if(newList.contains(originalList.get(i))==false){
newList.add(originalList.get(i));
}
else{
for(int j=0;j<newList.size();j++){
if(newList.get(j).equals(originalList.get(i))){
int var=newList.get(j).getCount();
int var1=var+originalList.get(i).getCount();
newList.get(j).setCount(BigDecimal.valueOf(var1));
}
}
}
}