📜  java 8 按属性在列表中查找 - Java (1)

📅  最后修改于: 2023-12-03 15:31:28.287000             🧑  作者: Mango

Java 8 按属性在列表中查找

在 Java 8 中,可以利用 Lambda 表达式和 Stream API 来快速、简洁地实现对列表中元素按照属性进行筛选的操作。下面分别介绍两种常用的方式。

使用 Lambda 表达式

假设有一个包含若干 Person 对象的列表,每个 Person 对象都有一个唯一的 ID 属性。现在我们需要从列表中查找某个 ID 对应的 Person 对象。

List<Person> personList = new ArrayList<>();
// 假设 personList 中已经添加了若干 Person 对象
int targetId = 1;
Person targetPerson = personList.stream()
    .filter(person -> person.getId() == targetId) // 使用 filter 方法过滤元素
    .findFirst() // 使用 findFirst 方法返回第一个符合条件的元素
    .orElse(null); // 如果列表中不存在符合条件的元素,返回 null

代码解析:

  1. 首先将列表转换为流对象,在流对象上进行操作。
  2. 使用 filter 方法过滤出 ID 属性等于目标 ID 的元素。
  3. 取出第一个符合条件的元素,使用 findFirst 方法。
  4. 如果不存在符合条件的元素,则返回 null,使用 orElse 方法。
使用 Stream API

我们也可以通过 Stream API 提供的 findFirstfindAnyorElse 方法来获取列表中符合条件的元素。下面以 findFirst 方法为例:

List<Person> personList = new ArrayList<>();
// 假设 personList 中已经添加了若干 Person 对象
int targetId = 1;
Person targetPerson = personList.stream()
    .findFirst(person -> person.getId() == targetId) // 使用 findFirst 方法返回第一个符合条件的元素
    .orElse(null); // 如果列表中不存在符合条件的元素,返回 null

代码解析:

  1. 将列表转换为流对象,在流对象上进行操作。
  2. 使用 findFirst 方法返回第一个符合条件的元素。
  3. findFirst 方法中使用 Lambda 表达式作为参数,过滤出 ID 属性等于目标 ID 的元素。
  4. 如果不存在符合条件的元素,则返回 null,使用 orElse 方法。
总结

以上就是在 Java 8 中按属性在列表中查找的两种常用方式。它们都十分便捷、简洁,且利用了 Java 8 的新特性,能够提升代码可读性,是现代 Java 开发中不可或缺的技能。