java stream流根据条件替换部分对象属性值
时间: 2023-10-24 12:12:50 浏览: 43
可以使用Java 8中的Stream API和Lambda表达式来实现根据条件替换部分对象属性值的操作。
假设我们有一个Person类:
```java
public class Person {
private String name;
private int age;
private boolean isMale;
// 构造函数、getter、setter方法省略
}
```
现在我们需要将所有年龄大于等于18岁的男性的名字改为"Mr. "开头,可以使用以下代码:
```java
List<Person> personList = new ArrayList<>();
// 假设已经将数据添加到personList中
personList.stream()
.filter(person -> person.getAge() >= 18 && person.isMale())
.forEach(person -> person.setName("Mr. " + person.getName()));
```
首先使用stream()方法将List转换成Stream,然后使用filter()方法过滤出年龄大于等于18岁并且是男性的人,最后使用forEach()方法将符合条件的人的名字改为"Mr. "开头。
如果需要同时修改多个属性,可以使用Lambda表达式实现。例如,将所有年龄大于等于18岁的男性的名字改为"Mr. "开头,年龄加上10岁,可以使用以下代码:
```java
personList.stream()
.filter(person -> person.getAge() >= 18 && person.isMale())
.forEach(person -> {
person.setName("Mr. " + person.getName());
person.setAge(person.getAge() + 10);
});
```
注意,这种方式会修改原始的对象属性,因此需要谨慎使用。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)