jdk1.8
一、去重(set去重)
List<Message> list= new ArrayList<>();
...
List<Message> unique = list.stream().collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(
Comparator.comparing(Message::getPhoneNumber)
)), ArrayList::new));
二、覆盖(map)
List<Message> list= new ArrayList<>();
...
//会乱序
List<Message> unique = list.stream().collect(Collectors.toMap(
Message::getPhoneNumber,
Function.identity(), (e1, e2) -> e2)).values().stream()
.collect(Collectors.toList());
//不会乱序LinkedHashMap
List<Message> unique =list.stream().collect(Collectors.toMap(
Message::getPhoneNumber,
Function.identity(), (e1, e2) -> e2,
LinkedHashMap::new)).values().stream().collect(Collectors.toList());