Java 如何制作forEach
我有一个关于:Java 如何制作forEach,java,foreach,Java,Foreach,我有一个关于: Map<String, Integer> map = new LinkedHashMap<>(); for (String o: gamma) map.merge(o, 1, (a, b) -> a + b); 但我确实喜欢这样我收到了一条信息: 无法对数组类型字符串[]调用forEach((e)->{}) 我做错了什么?如何实现这个forEach?只需使用Stream.of:Stream.of(gamma).forEach(e
Map<String, Integer> map = new LinkedHashMap<>();
for (String o: gamma)
map.merge(o, 1, (a, b) -> a + b);
但我确实喜欢这样我收到了一条信息:
无法对数组类型字符串[]调用forEach((e)->{})
我做错了什么?如何实现这个forEach?只需使用
Stream.of
:Stream.of(gamma).forEach(e->map.merge(e,1,(a,b)->a+b))代码>
并用于您的下一个问题 只需使用Stream.of
:Stream.of(gamma).forEach(e->map.merge(e,1,(a,b)->a+b))代码>
并用于您的下一个问题 这样做
Arrays.asList(gamma).forEach(e -> map.merge(e, 1, (a, b) -> a + b));
您的gamma是字符串数组,请在此基础上转换为list to foreach。这样做
Arrays.asList(gamma).forEach(e -> map.merge(e, 1, (a, b) -> a + b));
您的gamma是字符串数组,请在此基础上转换为list to foreach。另一种方法:
Arrays.stream(gamma).forEach(e -> map.merge(e, 1, (a, b) -> a + b));
另一种方法:
Arrays.stream(gamma).forEach(e -> map.merge(e, 1, (a, b) -> a + b));
什么是gamma
?gamma是一个字符串数组-String[]除了主要问题之外,它看起来像是要创建某种直方图。在这种情况下,请从中查看解决方案。在您的例子中,您可以使用Stream.of(gamma).collect(Collectors.groupingBy(Function.identity(),Collectors.counting())创建Map直方图
或者如果您添加静态导入,您可以将此代码缩短为Stream.of(gamma).collect(groupby(identity(),counting())
什么是gamma
?gamma是一个字符串数组-String[]除了主要问题之外,您似乎还想创建某种直方图。在这种情况下,请从中查看解决方案。在您的例子中,您可以使用Stream.of(gamma).collect(Collectors.groupingBy(Function.identity(),Collectors.counting())创建Map直方图
或者如果您添加静态导入,您可以将此代码缩短为Stream.of(gamma).collect(groupby(identity(),counting())
我可以不使用Stream API吗?@vesnaves您使用的Arrays.asList(gamma).forEach(…)
但是Stream有什么问题吗?为什么不使用Stream
API<代码>数组。流
在这里也是可能的,但我不明白你为什么要对自己施加这样的限制。@Dici这将中断并行执行,通常这被记录为不必要的副作用。更干净的方法是Arrays.stream(gamma).collect(Collectors.groupingBy(Function.identity(),Collectors.counting())
大多数不用于并行执行的代码将在多线程上下文中中断。我具体回答的是如何从数组创建流。否则,是的,在使用流时建议使用纯函数。我可以不使用流API吗?@vesnaves您使用Arrays.asList(gamma).forEach(…)
但是流有什么问题?为什么不使用Stream
API<代码>数组。流
在这里也是可能的,但我不明白你为什么要对自己施加这样的限制。@Dici这将中断并行执行,通常这被记录为不必要的副作用。更干净的方法是Arrays.stream(gamma).collect(Collectors.groupingBy(Function.identity(),Collectors.counting())
大多数不用于并行执行的代码将在多线程上下文中中断。我具体回答的是如何从数组创建流。否则,建议在使用流时使用纯函数。