我想在Java 8中重复键的Map中添加值。
例如:
如果strArr是["B:-1", "A:1", "B:3", "A:5"]
,那么我的程序应该返回字符串A:6,B:2
。
我的最终输出字符串应按字母顺序返回键。排除在加总后的值为0
的键。
输入:new String[] {"X:-1", "Y:1", "X:-4", "B:3", "X:5"}
输出:B:3,Y:1
输入:new String[] {"Z:0", "A:-1"}
输出:A:-1
尝试的代码:
public static String Output(String[] strArr) {
//strArr = new String[] {"X:-1", "Y:1", "X:-4", "B:3", "X:5"};
Map<String, Double> kvs =
Arrays.asList(strArr)
.stream()
.map(elem -> elem.split(":"))
.collect(Collectors.toMap(e -> e[0], e -> Double.parseDouble(e[1])));
kvs.entrySet().forEach(entry->{
System.out.println(entry.getKey() + " " + entry.getValue());
});
return strArr[0];
}
错误:
在主线程中发生异常 java.lang.IllegalStateException: 重复的关键字 -1.0
我该如何解决这个问题?
Map::compute
来修改当前值(无论键是否存在)。 - Mister_Jesus