二维数据聚合求最大值,用JavaScript或者Java怎么实现啊?

春上村树
  • 23

d91cfd87ef7399f82ac2349ff3d9865.png
有主臂工作半径和主臂实际载荷这两个字段
8634619ed662e1aef01b7c0fffdb8bb.png
这个图是我统计生成的,横轴是主臂工作半径值区间,纵轴是这个区间的值出现的次数。比如半径大于18小于19的值出现了3142次,这3142个半径值在上面excel表里就对应3142个主臂实际载荷的值,现在我想取这3142个主臂实际载荷值中的最大值。也就是说,最终的需求就是,取每个半径值区间内最大的主臂实际载荷值。用JavaScript或者Java怎么写啊?

回复
阅读 903
2 个回答
微凉
  • 1.3k
✓ 已被采纳

这应该是属于符号表的基本功能吧,方法很多啊,而且和语言无关,java有相关实现的,你这种场景,适合TreeSet;

TreeSet<Integer> set = new TreeSet<>();
        set.add(1);
        set.add(3);
        set.add(5);
        set.add(7);
        set.add(9);

 System.out.println(set.floor(4));

打印结果:3

如果你是entry关系,就用TreeMap;

 TreeMap<Integer,Integer> set = new TreeMap<>();
        set.put(1,100);
        set.put(3,300);
        set.put(5,500);
        set.put(7,700);
        set.put(9,900);

 System.out.println(set.floorEntry(4).getValue());

打印结果:300

linong
  • 25.4k

生成图表可以用 echarts 之类的

单纯计算的话就是遍历呗,看上去你把 key 向下取整,然后 value 取最大值,赋值保存即可

image.png

[
    [1.1,2],
    [1.1,3],
    [1.1,4],
    [1.1,5],
    [1.1,4],
    [1.9,1],
    [1.3,2],
    [1.3,3],
    [1.3,4],
    [1.3,5],
    [1.3,4],
    [1.3,1],
    [1.3,2],
    [1.3,3],
    [3.3,4],
    [1.3,5],
    [5.3,4],
    [1.3,1],
    [9.9,1]
].reduce((s, v)=>{
    key = v[0]>>0;
    s[key] = Math.max(s[key] || 0, v[1])
    return s
},{})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏