【问题标题】:Find unique elements and increment count [closed]查找唯一元素并增加计数[关闭]
【发布时间】:2013-07-30 04:36:01
【问题描述】:

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

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

id   name   count

1    A      4
2    B      3
3    C      2

我该怎么做?谢谢。

【问题讨论】:

  • 我试过了。我也得到了解决方案。

标签: java arraylist logic


【解决方案1】:

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

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

【讨论】:

  • 这只是逻辑!我没有使用套装就做到了!
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

    我找到了解决方案。

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

    【讨论】:

      猜你喜欢
      • 2016-01-12
      • 2015-03-07
      • 2020-09-15
      • 2013-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-04
      相关资源
      最近更新 更多