/**
* 按照①endTime正序②startTime倒序③随机 进行排序
* @param effectiveCoupon
* @return
*/
private List<Map<String, Object>> listSort(List<Map<String, Object>> effectiveCoupon) {
List<Map<String, Object>> newList = effectiveCoupon.stream().sorted(
Comparator.comparing((Map<String, Object> item) -> (String) (item.get("endTime")))
.thenComparing((Map<String, Object> item) -> (String) (item.get("startTime")), Comparator.reverseOrder())
).filter(distinctByKey(item -> item.get("activityId"))).collect(Collectors.toList());
log.debug("---listSort.newList: {}", newList);
return newList;
}
private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
Set<Object> seen = ConcurrentHashMap.newKeySet();
return t -> seen.add(keyExtractor.apply(t));
}