List<Object>对象集合常用处理

36 阅读1分钟

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());