假设有一个 Java 集合,包含以下 EntranceTrafficVO 对象:

[EntranceTrafficVO(id='4028805f88c2982d0188c2ebb56303a9', entranceName='一号出入口', rksl=72, cksl=0, year=2023, month=6, day=26),
EntranceTrafficVO(id='4028805f88c2982d0188c2ebb56303a9', entranceName='一号出入口', rksl=37, cksl=0, year=2023, month=5, day=5),
EntranceTrafficVO(id='4028805f88c2982d0188c2ec3a4b03b5', entranceName='二号出入口', rksl=0, cksl=0, year=null, month=null, day=null),
EntranceTrafficVO(id='4028805f88c2982d0188c2ecff5f03c1', entranceName='三号出入口', rksl=0, cksl=0, year=null, month=null, day=null)]

现在需要获取指定时间范围内(kssj-jssj)每天各个 ID 的 rksl 和 cksl 值,如果某个日期没有数据,则将该日期对应的 rksl 和 cksl 设为 0。

可以使用以下 Java 代码实现:

// 将 EntranceTrafficVO 按日期分类
Map<String, List<EntranceTrafficVO>> map = new HashMap<>();
for (EntranceTrafficVO vo : list) {
    String date = vo.getYear() + "-" + vo.getMonth() + "-" + vo.getDay();
    if (!map.containsKey(date)) {
        map.put(date, new ArrayList<>());
    }
    map.get(date).add(vo);
}

// 遍历每一天,获取各 id 的 rksl 和 cksl
LocalDate startDate = LocalDate.parse(startDateStr);
LocalDate endDate = LocalDate.parse(endDateStr);
List<Map<String, Integer>> result = new ArrayList<>();
while (!startDate.isAfter(endDate)) {
    String dateStr = startDate.toString();
    Map<String, Integer> dayMap = new HashMap<>();
    for (EntranceTrafficVO vo : map.getOrDefault(dateStr, Collections.emptyList())) {
        dayMap.put("id_" + vo.getId() + "_rksl", vo.getRksl());
        dayMap.put("id_" + vo.getId() + "_cksl", vo.getCksl());
    }
    result.add(dayMap);
    startDate = startDate.plusDays(1);
}

在上述代码中,首先将 EntranceTrafficVO 按日期分类,使用 Map<String, List<EntranceTrafficVO>> 来存储。然后从 startDateendDate 遍历每一天,使用 LocalDate 类来表示日期,如果该天没有数据,就将 rkslcksl 设为 0,存储到 dayMap 中。最后将 dayMap 添加到 result 中。最终得到的 result 中的元素是 Map<String, Integer> 类型,每个 Map 表示一天的数据,其中 key 的格式为 "id_xxx_rksl" 或 "id_xxx_cksl",表示对应 ID 的入口数量或出口数量。

该代码示例展示了如何使用 Java 代码对集合数据进行分类和统计,并根据指定时间范围获取所需数据。可以通过修改代码中的数据结构和逻辑,实现不同的数据处理需求。

Java 集合数据处理:获取指定时间范围内各 ID 的入口和出口数量

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

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