Java 集合数据处理:获取指定日期范围内每个出入口的流量统计

假设你有一个包含 EntranceTrafficVO 对象的集合,每个 EntranceTrafficVO 对象表示一个出入口在特定日期的流量数据,包含以下属性:

  • id:出入口 ID
  • entranceName:出入口名称
  • rksl:某个指标的流量值
  • cksl:另一个指标的流量值
  • yearmonthday:日期信息

现在你想要获取某个日期范围 kssjjssj 内,每天每个出入口的 rkslcksl 值。即使在原始数据中,某个日期或出入口的流量信息缺失,也需要将所有日期和出入口的信息完整展示出来,缺失的流量值默认设置为 0。

实现步骤

为了实现这个功能,可以使用 Map 数据结构来存储处理结果。具体步骤如下:

  1. 创建 Map 存储结果: 创建一个 Map,其中 key 为日期,value 为另一个 Map,存储每个出入口的 rkslcksl 值。

  2. 遍历集合,存储每天每个出入口的流量数据: 遍历原始集合,对于每个 EntranceTrafficVO 对象:

    • 根据 yearmonthday 属性构造一个 LocalDate 对象,作为外层 Mapkey
    • 获取内层 Map,如果内层 Map 不存在该出入口的记录,则新增一个记录并将 rkslcksl 初始化为 0。
    • 将该对象的 rkslcksl 值累加到内层 Map 中对应出入口的记录中。
  3. 遍历日期范围,获取每天的结果: 遍历日期范围 kssjjssj,对于每个日期:

    • 如果对应日期在外层 Map 中不存在,则新增一个记录,内层 Map 中所有出入口的 rkslcksl 都初始化为 0。
    • 遍历内层 Map,输出每个出入口的 rkslcksl 值。

代码示例

// 构造日期范围
LocalDate kssj = LocalDate.of(2023, 5, 1);
LocalDate jssj = LocalDate.of(2023, 6, 30);

// 创建Map存储结果
Map<LocalDate, Map<String, EntranceTrafficVO>> resultMap = new HashMap<>();

// 遍历集合,存储每个出入口每天的rksl和cksl
for (EntranceTrafficVO vo : list) {
    LocalDate date = LocalDate.of(vo.getYear(), vo.getMonth(), vo.getDay());
    Map<String, EntranceTrafficVO> innerMap = resultMap.getOrDefault(date, new HashMap<>());
    EntranceTrafficVO innerVO = innerMap.getOrDefault(vo.getId(), new EntranceTrafficVO(vo.getId(), vo.getEntranceName(), 0, 0, vo.getYear(), vo.getMonth(), vo.getDay()));
    innerVO.setRksl(innerVO.getRksl() + vo.getRksl());
    innerVO.setCksl(innerVO.getCksl() + vo.getCksl());
    innerMap.put(vo.getId(), innerVO);
    resultMap.put(date, innerMap);
}

// 遍历日期范围,获取每天的结果
for (LocalDate date = kssj; date.isBefore(jssj.plusDays(1)); date = date.plusDays(1)) {
    Map<String, EntranceTrafficVO> innerMap = resultMap.getOrDefault(date, new HashMap<>());
    for (EntranceTrafficVO vo : innerMap.values()) {
        System.out.println(date + ' ' + vo.getEntranceName() + ' ' + vo.getRksl() + ' ' + vo.getCksl());
    }
}

总结

本文展示了如何使用 Java 代码,从一个包含出入口流量数据的集合中,提取指定日期范围内的每天各个出入口的流量统计信息。这种方法可以方便地处理数据缺失的情况,保证所有日期和出入口的流量信息完整呈现。

Java 集合数据处理:获取指定日期范围内每个出入口的流量统计

原文地址: https://www.cveoy.top/t/topic/oZKF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录