为了账号安全,请及时绑定邮箱和手机立即绑定

使用 java 8 流求平均值

使用 java 8 流求平均值

holdtom 2021-10-06 12:38:58
我是 Java 8 的新手,仍处于学习阶段。我必须使用 java 8 编写以下逻辑。我有一个 Json 数组数据,我的 json 结构如下。{"list":[{"core":{"min":281.556,"max":286.67,"top":972.73},"dt":"2017-02-16 12:00:00"},{"core":{"min":281.821,"max":285.66,"top":970.91},"dt":"2017-02-16 15:00:00"},{"core":{"min":274.498,"max":277.05,"top":970.44},"dt":"2017-02-16 18:00:00"},{"core":{"min":271.503,"max":272.78,"top":969.32},"dt":"2017-02-16 21:00:00"}]}这个 jsonArray 将有大约 100 个 jsonObject 每 3 小时包含数据。我实际上需要使用 java 8 流或使用其他 java 8 功能分别找到 min 和 max 的平均值和 top 的平均值。另一个标准是最小值和最大值平均值应基于白天或黑夜。如果 dt 包含像 06:00 或 09:00 或 12:00 或 15:00,则应为 dayavg(白天的最小值 + 最大值),否则应为夜间平均值((夜间的最小值 + 最大值))。顶不取决于白天或黑夜。任何帮助表示赞赏下面是使用 java 7 的登录。需要使用 Java 8 功能。int dayavg=0;        int nightavg = 0;        int topavg=0;        int day=0;        int night = 0;        int top=0;    for(int i=0;i<50;i++){        JsonNode node = list.get(i);        String dt = node.get("dt").textValue();        if(dt.contains("06:00:00")|| dt.contains("09:00:00") || dt.contains("12:00:00") || dt.contains("15:00:00")){            int val = node.get("core").get("min").asInt() + node.get("core").get("max").asInt();            day = day + val;        }        if(dt.contains("18:00:00")|| dt.contains("21:00:00") || dt.contains("00:00:00") || dt.contains("03:00:00")){            int val = node.get("core").get("min").asInt() + node.get("core").get("max").asInt();            night = night + val;        }        int val = node.get("core").get("top").asInt();        top = top + val;    }    topavg = top/50;    dayavg = day/100;    nightavg = night/100;
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 843 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信