当前位置: 首页 > 知识库问答 >
问题:

使用lambda表达式删除具有重复属性的元素[duplicate]

公冶森
2023-03-14

我有一个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个元素可以存活。如何使用Java8 lambda表达式来实现这一点呢?

共有1个答案

邢修明
2023-03-14

您可以尝试以下操作:

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

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

 类似资料:
  • 是否可以在@cacheable注释的除非表达式中使用spring属性占位符?我希望缓存一个服务方法,除非返回的结果小于@PropertySource(“classpath:application.properties”)中指定的属性minCacheCalc的值。

  • 问题内容: 假设我想使用正则表达式删除字符串中的所有重复字符(特定字符)。这很简单- 如果我想用相应的字符替换所有重复的字符(即a,z)怎么办?我该怎么做呢? 注意: 我知道可以使用哈希表或某些O(n ^ 2)算法更好地解决这种删除重复项的方法,但是我想使用正则表达式进行探索 问题答案: 的周围的指定 捕获组 ,然后将(一个 反向引用 在图案和替换两者)指的是第一个捕获组的内容。 因此,正则表达式

  • 我有一个firebase数据结构,如下所示: 现在我想删除节点KJSXd4ScEmJ6N4UFc5k。但我只知道“雇员名”:塞马。我尝试删除节点时使用了: 但这不起作用,因为“无效的Firebase数据库路径:$member.Firebase数据库路径不能包含“.”、“#”、“$”、“[”或“].”” 所以我的问题是,我如何删除节点:"-KJSXd4ScEmJ6N4UFc5k"只知道:"Semah

  • 这是我的清单: 我想按对列表进行排序,如果相等,则按排序,如果相等,则按排序。但是到目前为止,我只能使用Lambda表达式按一个属性排序: 如果我尝试 事实证明是错误的。。。

  • 你知道在构建过程中给元素分配属性是非常有帮助和高效的。基本上,元素是一个可以分配给任何东西的对象: 在测试中,这些实际上运行良好,返回了可靠的结果; 我寻求一种方法来详细观察和操纵这些动作。 例如,我想得到一个所有赋值的对象: 以及一种删除所有的方法(仅指定了插件javascript,而不是默认值,例如,,等等)

  • 问题内容: 我在线路42和43的误差:, 未处理的异常类型InterruptedException的 。如果我尝试快速修复,它将使用catch Exception 创建try catch ,它将具有相同的错误,并且将尝试以相同的方式修复它,并继续用try catch包围它。 问题答案: 您已创建一个函数接口,该函数接口的方法声明为引发,这是一个已检查的异常。但是,你叫一个lambda表达式作为参数