List<String> aa = CollUtil.newArrayList("a*4", "b*3", "a*2", "c*4");
Map<String, List<String>> aam =
aa.stream().collect(Collectors.groupingBy(a -> {
List<String> bb = StrUtil.split(a, '*');
if (bb.size() != 2) {
throw new ReException(a + "格式错误");
}
// key
return bb.get(0);
}, Collectors.mapping(s-> StrUtil.split(s, '*').get(1), Collectors.toList())));
System.out.println(aam);
输出:{a=[4, 2], b=[3], c=[4]}
// 分组求和
Map<String, Integer> aam =
aa.stream().collect(Collectors.groupingBy(a -> {
List<String> bb = StrUtil.split(a, '*');
if (bb.size() != 2) {
throw new ReException(a + "格式错误");
}
// key
return bb.get(0);
}, Collectors.mapping(s-> StrUtil.split(s, '*').get(1), Collectors.summingInt(s -> Integer.valueOf(s)))));
输出:{a=6, b=3, c=4}