【发布时间】:2018-09-22 18:22:57
【问题描述】:
我有一个:
Map<String, Integer> map = new LinkedHashMap<>();
for (String o: gamma)
map.merge(o, 1, (a, b) -> a + b);
我需要像这样制作 forEach:
gamma.forEach(e -> map.merge(e, 1, (a, b) -> a + b));
但后来我确实收到了一条消息: 无法在数组类型 String[]
上调用 forEach(( e) -> {})我做错了什么?如何做到这一点?
【问题讨论】:
-
什么是
gamma? -
gamma 是一个字符串数组 - String[]
-
除了主要问题之外,您似乎想要创建某种直方图。在这种情况下,请查看Producing histogram Map for IntStream raises compile-time-error 的解决方案。在您的情况下,您可以使用
Stream.of(gamma).collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));创建Map<String, Long> histogram,或者如果您添加静态导入,您可以将此代码缩短为Stream.of(gamma).collect(groupingBy(identity(), counting()))