【发布时间】:2018-08-09 18:17:39
【问题描述】:
假设我们有样本列表(Double 类型){1.5, 1.1, 2.2, 1.0, 2.2, 3.3}。如何实现将 Integer 作为键(组)并将出现次数作为该 Map 的值的 Map? 对于给定的示例 1 -> 3, 2 -> 2, 3 -> 1。我知道我可以使用 if/else if 或 case 逻辑来实现这一点,但在我的应用程序中它将是 30 个不同的组(代码中的 30 个 case 或 elseifs) . 应用程序正在根据从数据库(数百万个样本)中提取的给定风速创建风直方图。 我的做法:
Map<Double, Long> map = windData.stream()
.collect(Collectors.groupingBy(WindData::getSpeed, Collectors.counting()));
其中 windData 是保存风速的列表,而 getSpeed 是检索风速值。这种方法生成双打组,这意味着它只计算出现次数,我想得到 0-1、1-2、2-3、3-4 等组。
【问题讨论】: