我有一个数组
byte[] input = new byte[256];
我有地图
Map<Byte, Integer> frequencyMap = new HashMap<>();
如何将顺序中的所有元素放入lambda函数中? 我喜欢这个,但是另一种方法呢?
for (var b : input)
frequencyMap.merge(b, 1, (o1, o2) -> o2 = frequencyMap.get(b) + 1);
如何在循环中完成此操作?
答案 0 :(得分:0)
除了合并功能过于复杂之外,它基本上和它一样好。相反,写
frequencyMap.merge(b, 1, Integer::sum);
(或使用Multiset
中的Guava
)
答案 1 :(得分:0)
您可以使用groupingBy
和summingInt
收藏家获得所需的结果。
Map<Byte, Integer> frequencyMap =
IntStream.range(0, input.length)
.mapToObj(i -> input[i])
.collect(Collectors.groupingBy(Function.identity(),
Collectors.summingInt(e -> 1)));
这意味着您不需要外部增强型for
循环迭代,也不需要Map::merge
。