【问题标题】:How to search a collection using lambda expression in Java? [closed]如何在 Java 中使用 lambda 表达式搜索集合? [关闭]
【发布时间】:2015-03-09 16:11:03
【问题描述】:

有一个Person 类(包含三个元素:person_nameagesex)。有一个 List 有 100 个 Person 对象。

我需要通过person_name搜索这个列表,并用lambda表达式实现搜索功能。

【问题讨论】:

  • @Sotiros,请原谅我过度使用需要...如果您能帮助我解决问题,我将不胜感激
  • 我不知道该帮你什么,你还没问过问题。
  • 我需要一个搜索功能来搜索人员列表。应使用 Lamba 表达式进行搜索。
  • 阅读Stream的javadoc。
  • 我不怀疑@user3677652 可以在流教程或文档中发现这一点,但这也是一个相当容易回答的问题。有关更多信息,请从聚合操作教程开始:docs.oracle.com/javase/tutorial/collections/streams/index.html

标签: java lambda collections java-8


【解决方案1】:
public Optional<Person> findPersonByName(final List<Person> list, final String name) {
    return list.stream().filter(p -> p.getName().equals(name)).findAny();
}

它返回一个Optional,因此您需要对其进行测试以查看是否存在值。或者,如果您希望在搜索失败时返回 null,则可以使用 orElse(null)

【讨论】:

  • 正如您问题的评论者所指出的,Java 文档中对此进行了很好的处理。我建议你从聚合操作的教程开始:docs.oracle.com/javase/tutorial/collections/streams/index.html.
  • 请问,如果方法返回一个列表,为什么签名是 Optional 而不是 Optional
  • @jpganz18 该方法不返回列表。它返回零个或一个人对象,具体取决于是否存在给定名称的人。因此是可选的。
猜你喜欢
  • 1970-01-01
  • 2022-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
相关资源
最近更新 更多