gpt4 book ai didi

java - 关于汇总列表中的值的建议

转载 作者:行者123 更新时间:2023-12-01 21:48:02 26 4
gpt4 key购买 nike

我有一个如下所示的字符串列表:

"AB", "XY", 10
"CD", "XY", 15
"CD", "XY", 12
"AB", "XY", 19

我想要做的是将最后一个值中的数字与第一个值相加,并将其放入一个新列表中。

所以这会给我:

"AB", "XY", 29
"CD", "XY", 27

我是 Java 新手,所以我仍然在语法和不同方法上苦苦挣扎。我查看了compareTo() 和equals() 方法,但是唉。需要一些帮助。

最佳答案

第一个问题是:为什么将其作为字符串列表?看来您有一个包含 3 个属性的对象列表:2 个字符串和一个整数。拥有这样的数据结构将使代码更容易阅读和编写。

现在,要解决这个问题,您首先需要创建一个映射来保存字符串的第一部分和数字的总和:

  1. 使用 Stream API, map 是通过 Collectors.groupingBy 创建的收集器将每个字符串分类到字符串的第一部分,即最后一个逗号之前的所有内容。然后,对于分类到同一键的所有值,我们使用Collectors.summingInt求和。 ,最后一个逗号后面的数字。
  2. 当我们拥有该映射时,我们可以迭代其所有条目并将每个条目转换回 String最后将其收集到一个列表中 Collectors.toList() .

示例代码:

public static void main(String[] args) {
List<String> list = Arrays.asList("\"AB\", \"XY\", 10", "\"CD\", \"XY\", 15", "\"CD\", \"XY\", 12", "\"AB\", \"XY\", 19");

Map<String, Integer> map =
list.stream()
.collect(Collectors.groupingBy(
s -> s.substring(0, s.lastIndexOf(',')),
Collectors.summingInt(s -> Integer.parseInt(s.substring(s.lastIndexOf(',') + 2)))
));
List<String> result =
map.entrySet()
.stream()
.map(e -> e.getKey() + ", " + e.getValue())
.collect(Collectors.toList());

System.out.println(result);
}

关于java - 关于汇总列表中的值的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35685767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com