java - 使用 lambda 表达式删除具有重复属性的元素

标签 java lambda java-8

我有一个像这样的 Person 对象列表:

list.add(new Person("John", 20)); //person is just name and age
list.add(new Person("Maria", 21));
list.add(new Person("John", 40));
list.add(new Person("Carl", 10));

结果列表中必须没有同名的人,无论年龄如何,因此只有 3 个元素会幸存。如何使用 Java 8 lambda 表达式来实现这一点?

最佳答案

您可以尝试以下操作:

Set<String> unique = new HashSet<>();
list.removeIf(e -> !unique.add(e.getName()));

请注意,Person 类需要有一个 getter 来返回人名。

关于java - 使用 lambda 表达式删除具有重复属性的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49290116/

相关文章:

java - 在 Tomcat 中找不到 logback.xml(或其他资源)

当格式包含循环时,Java 检查特殊格式的字符串

java - 未收到从通知服务器发送的 GCM 通知

function - Kotlin:将对象列表转换为对象属性映射

java - 空指针异常 | `this` 内部枚举构造函数导致 NPE

java - BouncyCasSTLe 编码差异

Java 无法使用双冒号运算符找到正确的重载方法

c++ - 如何在 C++ 中调用此 Lambda 函数

java.sql.Timestamp ZoneOffset 与 java.time 不匹配

java - G1GC 非常高的 GC 计数和 CPU,非常频繁的 GC 会降低性能