查找唯一元素和增量计数

时间:2013-07-30 04:36:02

标签: java arraylist logic

我有一个名为ResourceObject的类

public class ResourceObject
{
    int id;
    String Name;
    int count;
}

对于本课程,我已覆盖equals方法,以便只有idname相同才能使对象相等。

现在我列出了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

我该怎么做?谢谢。

3 个答案:

答案 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));
            }
        }
    }
}