List object对象集合根据多个字段去重
List<Person> persons = listPersons.stream()
.filter(distinctByKey(x -> Arrays.asList(x.getId(), x.getName())))
.collect(Collectors.toList());
private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
Map<Object, Boolean> map = new ConcurrentHashMap<>();
return t -> map.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
List object对象集合根据多个字段排序
Comparator<Person> comparator = Comparator.comparing(person -> person.name);
comparator = comparator.thenComparing(Comparator.comparing(person -> person.age));
List<Person> tempList = people.stream().sorted(comparator).collect(Collectors.toList());