创建频率图

所述 groupingBy(classifier, downstream) 集电极允许的收集 Stream 元件成 Map 由一组中的每个元素进行分类并执行上划分在相同组中的元素的下游操作。

这个原则的一个典型例子是使用 Map 来计算 Stream 中元素的出现次数 。在此示例中,分类器只是标识函数,它按原样返回元素。下游操作使用 counting()计算相等元素的数量。

Stream.of("apple", "orange", "banana", "apple")
      .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
      .entrySet()
      .forEach(System.out::println);

下游操作本身是一个收集器( Collectors.counting() ),它对 String 类型的元素进行操作,并生成 Long 类型的结果。collect 方法调用的结果是 Map<String, Long>

这将产生以下输出:

banana = 1
orange = 1
apple = 2