我有List<Person> persons = new ArrayList<>();
,我想列出所有唯一的名称。我的意思是,如果有“ John”,“ Max”,“ John”,“ Greg”,那么我只想列出“ Max”和“ Greg”。有什么方法可以使用Java流吗?
最佳答案
我们可以使用流和Collectors.groupingBy
来计算每个名称出现的次数-然后过滤出现多次的任何名称:
List<String> res = persons.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
.entrySet()
.stream()
.filter(e -> e.getValue() == 1)
.map(e -> e.getKey())
.collect(Collectors.toList());
System.out.println(res); // [Max, Greg]