List<DataOutPut> dataOutPutList = all.stream().collect(Collectors.groupingBy(
data -> data.getControlAddress() + "-" + data.getDeviceNumber() + "-" + data.getControlNumber() + "-" + data.getComponentType() + "-" + data.getComponentNumber(),
// 使用 LinkedHashMap 保持插入顺序
LinkedHashMap::new,
// 选择最大时间的数据
Collectors.maxBy(Comparator.comparing(data -> {
// 解析时间字符串为 LocalDateTime 对象
LocalDateTime dateTime = LocalDateTime.parse(data.getCreateDate(), formatter);
// 返回时间戳
return dateTime.toEpochSecond(ZoneOffset.UTC);
}))
))
// 获取分组后的值集合
.values().stream()
// 过滤空值
.filter(Optional::isPresent)
.map(Optional::get)
.sorted(Comparator.comparing(DataOutPut::getCreateDate))
.collect(Collectors.toList());
集合中按字段值分组,查询最新数据
于 2024-07-11 14:15:01 首次发布