Java流——查找唯一元素

标签 java java-8 java-stream

我有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]

关于Java流——查找唯一元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43283767/

相关文章:

Java-并发和交错

jackson - 如何使用 Jackson 序列化/反序列化 java.util.stream.Stream?

java - 三元运算符在 JDK8 和 JDK10 上的行为差异

java - 选择列表的元素直到满足 Java 8 Lambdas 的条件

sorting - 按反转值对 Map<String, Long> 进行排序

Java Stream 相当于 ReactiveX Observable#scan

JavaFX 从 Controller 获取场景

java - 如何使用java反转缓冲区内的字节

java - 如何在 Java 8 中使用过滤器忽略 int 数组中的值并收集

java - java (swing) 中自定义 JButton 中的未知异常