【问题标题】:Java 1.7, Group list items in an arraylist and aggregate by spesific attribute from the arraylistJava 1.7,在数组列表中对列表项进行分组,并通过数组列表中的特定属性进行聚合
【发布时间】:2017-10-18 13:11:57
【问题描述】:

在上图中,我有一个类型为 T 的数组列表,

我想按一个属性对列表项进行分组,同时聚合另一个属性,并从结果中创建一个新的数组列表。 谢谢你的帮助... 编辑:图片链接已失效,但我记得我试图用草图而不是一段代码来解释我需要什么。那时我是 java 的新手,我不能在 List 中做一个简单的 foreach 循环,如果反对者把它收回我会很感激,因为 Sacoverflow 说我可能会因为提问而被阻止......

【问题讨论】:

  • 有什么问题?到目前为止,您尝试了什么?
  • 我尝试了映射,但我无法获得聚合结果,我无法获得正确的循环来迭代数组列表并创建我需要的逻辑,我基本上是一个新手,对不起。 .
  • 编辑您的问题并包含您尝试过的代码。将代码包含为文本,而不是图片。
  • 请阅读minimal reproducible example - 然后为您的问题添加代码/问题描述。并且请:不要使用屏幕截图来获取可以轻松写成纯文本的信息!
  • 我试过但无法让代码块工作,它不允许我提交我的编辑。再次抱歉,我很早就知道 stackoverflow,但问的问题很少,我不熟悉这个概念。道歉

标签: java arraylist hashmap


【解决方案1】:

您可以使用简单的 for 循环来完成此操作,该循环涉及 ListMap,例如:

Map<String, Integer> map = new HashMap<String, Integer>();
List<T> list = new ArrayList<T>();
for(T t : list) {
    if(map.containsKey(t.attr1)) {
        map.put(t.attr1, map.get(t.attr1) + t.attr2);
    }else {
        map.put(t.attr1, t.attr2);
    }
}
System.out.println(map);

【讨论】:

  • 谢谢,这正是我想要的。我在做“map.get(t.attr1) + t.attr2”部分错误
猜你喜欢
  • 2022-01-23
  • 2023-02-07
  • 2021-06-15
  • 1970-01-01
  • 1970-01-01
  • 2015-12-18
  • 2023-03-03
  • 2021-09-02
相关资源
最近更新 更多