【发布时间】:2019-10-28 19:34:37
【问题描述】:
我有这样的任务:在排序的字符串流中,将所有 3 个相同字符串的组更改为一个包含大写字母的组(使用 java 8 流 API)。示例:
input = {"a","a","b","b","b","c"}
output = {"a","a","B","c"}
我可以在流中计算相同的字符串,但我不明白如何替换一个组,而无需额外的迭代。我现在只有:
Map<String, Long> result = Stream.of("a","a","b","b","b","c")
.collect(Collectors.groupingBy(Function.identity(),
LinkedHashMap::new, Collectors.counting()));
System.out.println(result);
//当前输出:{a=2, b=3, c=1}
【问题讨论】:
-
所以如果
b出现4 次,输出将只是{"a","a","b","b","b","b","c"}或{"a","a","B","b","c"}? -
出现不超过3次,所以是大写字母
标签: java java-8 java-stream grouping collectors