Java 8 Stream: 使用 filter() 和 findFirst() 生成单个 PortainerServiceSchoolVo 对象

使用 Java 8 的 Stream API,你可以轻松地从集合中过滤和提取数据。如果你需要从一个列表中生成单个 "PortainerServiceSchoolVo" 实体对象,而不是整个数组,你可以使用 findFirst() 方法。

如何使用 findFirst() 获取单个对象:

  1. 过滤: 使用 filter() 方法过滤列表,找到满足条件的元素。
  2. 获取第一个匹配项: 使用 findFirst() 方法获取第一个匹配的元素。
  3. 处理空结果: 由于 findFirst() 方法返回 Optional<PortainerServiceSchoolVo> 对象,所以你需要使用 ifPresent() 方法来检查是否包含值。

示例代码:

import java.util.Arrays;
import java.util.List;
import java.util.Optional;

public class Main {
    public static void main(String[] args) {
        List<PortainerServiceSchoolVo> schoolVos = Arrays.asList(
                new PortainerServiceSchoolVo("School 1"),
                new PortainerServiceSchoolVo("School 2"),
                new PortainerServiceSchoolVo("School 3")
        );

        Optional<PortainerServiceSchoolVo> firstSchoolVo = schoolVos.stream()
                .filter(schoolVo -> schoolVo.getName().equals("School 2"))
                .findFirst();

        firstSchoolVo.ifPresent(System.out::println);
    }
}

class PortainerServiceSchoolVo {
    private String name;

    public PortainerServiceSchoolVo(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return "PortainerServiceSchoolVo{" +
                "name='" + name + "'" +
                '}';
    }
}

解释:

在上面的代码中,我们创建了一个名为 "School 2" 的 PortainerServiceSchoolVo 对象。然后,我们使用 filter() 方法过滤列表,找到名为 "School 2" 的对象。最后,我们使用 findFirst() 方法获取第一个匹配的元素,并将结果存储在 Optional<PortainerServiceSchoolVo> 对象中。如果找不到匹配项,则 Optional 对象将为空。

输出结果:

PortainerServiceSchoolVo{name='School 2'}

注意:

  • 使用 ifPresent() 方法来确保 Optional 对象不为空,并在包含值的情况下执行代码。
  • findFirst() 方法只返回第一个匹配项。如果有多个匹配项,只有第一个会被返回。

希望这篇文章能帮助你了解如何使用 Java 8 的 Stream API 生成单个 PortainerServiceSchoolVo 对象。

Java 8 Stream: 使用 filter() 和 findFirst() 生成单个 PortainerServiceSchoolVo 对象

原文地址: https://www.cveoy.top/t/topic/qmYC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录