-1

我有一个名为 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

我要做的就是找到唯一的列表并增加计数。即,结果应该是

id   name   count

1    A      4
2    B      3
3    C      2

我该怎么做?谢谢你。

4

3 回答 3

1

遍历List并将元素添加到 aSet如果Set不包含元素 ,如果Set已经有元素 ,则从 中获取元素Set并增加其count

在循环结束时,如果需要,您可以将 转换Set为 a List

于 2013-07-30T04:41:39.780 回答
0

好吧,就像伪代码中的一个想法。

for(ResourceObject o : resList) {
    int count = sumAllCounts(o);
    saveCountAndObjectSomewhere(o, count);
}
showResults();

当然,这将为每个相等的对象显示几行,但是您可以通过将它们放在 Set 中来消除重复项。

于 2013-07-30T04:41:55.877 回答
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));
            }
        }
    }
}
于 2013-07-30T05:42:34.933 回答