当前位置: 首页 > 知识库问答 >
问题:

将双重对象分组以映射以创建直方图

司徒瀚
2023-03-14

让我们假设,我们有样本列表(类型Double){1.5,1.1,2.2,1.0,2.2,3.3}。如何实现将整数作为键(组)并将出现次数作为该贴图值的贴图?对于给定的示例1-

Map<Double, Long> map = windData.stream()
.collect(Collectors.groupingBy(WindData::getSpeed, Collectors.counting()));

其中windData是保存风速的列表,getSpeed是检索风速值。这种方法生成一组双精度,这意味着它只计算出现次数,我希望得到0-1、1-2、2-3、3-4等组。

共有2个答案

段弘和
2023-03-14
匿名用户

这是一个从值流生成“直方图”数据的管道:

HashMap<Double, Long> res = 
        DoubleStream.of(1.5, 1.1, 2.2, 1.0, 2.2, 3.3)
        .collect(HashMap<Double, Long>::new,
                 (map, dbl) -> map.merge(Math.floor(dbl), 1L, (k, v) -> k + v), 
                 (map1, map2) -> map1.putAll(map2));

打印<代码>分辨率输出<代码>{2.0=2,1.0=3,3.0=1}。

要将其应用于对象流,我只需使用mapToDouble将其转换为双流:

windData.stream().mapToDouble(WindData::getSpeed)
    .collect(HashMap<Double, Long>::new,
                 (map, dbl) -> map.merge(Math.floor(dbl), 1L, (k, v) -> k + v), 
                 (map1, map2) -> map1.putAll(map2));

关于结果的注释:地图的键是区间的下边界(0is0-11is1-2

汲丰茂
2023-03-14

只需将第一个参数中的双精度整数四舍五入为分组依据。首先,您的问题是样本的列表包含s,但您的代码片段表明它实际上是一个列表

import static java.util.stream.Collectors.counting;
import static java.util.stream.Collectors.groupingBy;
....

List<Double> speeds = ...;
Map<Integer, Long> histogram = speeds.stream()
               .collect(groupingBy(Double::intValue, counting()));

另请注意,除非出于其他原因从数据库中提取此数据,否则请考虑使用SQL在数据库端执行此操作

 类似资料:
  • 我有一个踢足球比赛的数据集,我正试图更仔细地观察每个球队在家里踢的比赛。因此,我试图为每支球队创建一个专栏,其中包含跟踪连续获胜的计数器。应适用以下逻辑: 如果获胜:增加计数器=1 我创建了一个函数,该函数输出一个可以映射到数据帧(按日期排序)的字典,以创建新的计数器列。 应创建一个新列,指示主队的连续得分。子集的预期结果应如下所示: 我试图将dict映射到新的数据帧。在执行此操作时,我会显示一个

  • 问题内容: 谁能解释Java如何执行此代码?我的意思是执行每个语句的顺序。 输出: 问题答案: 类初始化开始。最初为null,为false 第一个静态变量初始值设定项()运行: 创建了一个新实例 用于执行的实例变量初始值设定项-当前为false,因此值为false 执行第二个静态变量初始化器(),将值设置为true 类初始化完成 运行,打印出,这是错误的 请注意,如果声明为,则将其视为 编译时常量

  • 我正在尝试将我的对象[]数组映射并过滤到int[]数组。如果对象是int,效果很好,但如果不是int,则抛出强制转换异常。我想知道我是否可以在lambda表达式中附加一个try/catch?这是我的代码: 或者更好的方法是试着抓住整个街区?

  • 问题内容: 我是React JS的新手,问题是我需要在这段代码中显示数据库中的所有字段。我已经能够在浏览器控制台中将所有数据作为对象获取,并且能够在浏览器中查看数组中的最后一条数据,但无法查看它们。请原谅我代码中的格式错误,这是我的新知识。在此先感谢..... 输出和代码 浏览器视图:Lands of Toys Inc.是名称131是ID JSON数据: 这些数据是通过以插件形式编写的PHP代码获

  • 问题内容: 我正在尝试从PHP数组创建JSON对象。该数组如下所示: 编码JSON的代码如下所示: 最后,JSON文件应该看起来像这样: 如何将创建的JSON代码封装在“项目”中:{JSON CODE HERE}。 问题答案: 通常,您将执行以下操作: 但是,似乎您希望输出与“ ”一起使用,因此最好确保通过传递常量来强制将其编码为对象。 “ ”括号指定一个对象,“ ”用于根据JSON规范的数组。

  • 我有一个对象数组: 寻找一个简单的一行返回: 因此,我可以很容易地泵到一个反应下拉与适当的键。 我觉得这个简单的解决方案应该可以工作,但是我得到了无效的语法错误: