去重第一种方法
//根据报警Id去重
ArrayList<Map> alarmid = overrunRedAlarm.stream().collect(
Collectors.collectingAndThen(
Collectors.toCollection(
() -> new TreeSet<>(Comparator.comparing(m -> m.get("alarmid").toString()))
), ArrayList::new
)
);
去重第二种方法
//去重方法
private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
Map<Object, Boolean> seen = new ConcurrentHashMap<>();
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
List<Map> dataList = overrunRedAlarm1 .stream()
.filter(distinctByKey(o -> o.get("alarmid") ))
.collect(Collectors.toList());
排序
正序
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
Collections.sort(curveByNodeId, (o1, o2) -> {
LocalDateTime cj = LocalDateTime.parse(o1.get("DataTime").toString(), dateTimeFormatter);
LocalDateTime dataTime = LocalDateTime.parse(o2.get("DataTime").toString(), dateTimeFormatter);
return cj.compareTo(dataTime);
}
);
倒序
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
Collections.sort(curveByNodeId, (o1, o2) -> {
LocalDateTime cj = LocalDateTime.parse(o1.get("DataTime").toString(), dateTimeFormatter);
LocalDateTime dataTime = LocalDateTime.parse(o2.get("DataTime").toString(), dateTimeFormatter);
return dataTime .compareTo(cj );
}
);
对象的排序去重
List<AlarmDetailsDTO> unique = mapList.getRecords().stream()
.sorted(Comparator.comparing(AlarmDetailsDTO::getDataTime).reversed()
.thenComparing(AlarmDetailsDTO::getEndordertime).reversed())
.collect(Collectors.toMap(
AlarmDetailsDTO::getAlarmId, // keyMapper
Function.identity(), // valueMapper
(existing, replacement) -> replacement // mergeFunction
))
.values()
.stream()
.collect(Collectors.toList());