Java 8 Stream: 使用 filter() 和 findFirst() 生成单个 PortainerServiceSchoolVo 对象
Java 8 Stream: 使用 filter() 和 findFirst() 生成单个 PortainerServiceSchoolVo 对象
使用 Java 8 的 Stream API,你可以轻松地从集合中过滤和提取数据。如果你需要从一个列表中生成单个 "PortainerServiceSchoolVo" 实体对象,而不是整个数组,你可以使用 findFirst() 方法。
如何使用 findFirst() 获取单个对象:
- 过滤: 使用
filter()方法过滤列表,找到满足条件的元素。 - 获取第一个匹配项: 使用
findFirst()方法获取第一个匹配的元素。 - 处理空结果: 由于
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 对象。
原文地址: https://www.cveoy.top/t/topic/qmYC 著作权归作者所有。请勿转载和采集!