如何将lambda与数组Java一起使用

时间:2018-06-06 17:46:08

标签: java arrays lambda

我有一个数组

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);

如何在循环中完成此操作?

2 个答案:

答案 0 :(得分:0)

除了合并功能过于复杂之外,它基本上和它一样好。相反,写

frequencyMap.merge(b, 1, Integer::sum);

(或使用Multiset中的Guava

答案 1 :(得分:0)

您可以使用groupingBysummingInt收藏家获得所需的结果。

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