多个元素的list,怎么判断某个字段等于某个常量后输出特定的值
时间: 2024-02-16 13:04:49 浏览: 26
如果要对 List 中的元素进行条件判断,并根据判断结果输出特定的值,可以使用 Java 8 的 Stream API 中的 `filter()` 和 `map()` 方法。
假设我们有一个 Person 类,其中包含 name 和 age 两个字段:
```java
class Person {
private String name;
private int age;
// 构造函数、getter、setter 等省略
}
```
现在我们有一个 Person 对象的 List,我们需要判断其中 age 字段等于某个常量后输出 name 字段。可以使用以下代码:
```java
List<Person> persons = Arrays.asList(
new Person("Alice", 20),
new Person("Bob", 30),
new Person("Charlie", 20)
);
int age = 20;
List<String> names = persons.stream()
.filter(p -> p.getAge() == age)
.map(Person::getName)
.collect(Collectors.toList());
System.out.println(names);
```
上面的代码将输出 `[Alice, Charlie]`,因为 List 中有两个 Person 对象的 age 字段等于 20,分别对应的 name 字段为 Alice 和 Charlie。
解释一下代码的执行过程:
1. 使用 `stream()` 方法将 List 转换为 Stream。
2. 使用 `filter()` 方法过滤出 age 字段等于常量的 Person 对象。
3. 使用 `map()` 方法将满足条件的 Person 对象转换为它的 name 字段。
4. 使用 `collect()` 方法将处理结果转换为 List。
需要注意的是,上面代码中的 `Person::getName` 是一个方法引用,等价于 Lambda 表达式 `p -> p.getName()`,它将 Person 对象转换为它的 name 字段。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)