stream。map方法修改集合中某个字段的值
时间: 2024-03-06 15:50:35 浏览: 133
可以使用Java 8中的Stream API中的map方法来修改集合中某个字段的值。假设我们有一个包含Person对象的List集合,其中Person对象包含name和age两个属性。如果我们想将集合中所有Person对象的age属性加上10,可以使用以下代码:
```
List<Person> personList = ... ; // 假设已经初始化了Person对象的List集合
personList = personList.stream()
.map(person -> {
person.setAge(person.getAge() + 10);
return person;
})
.collect(Collectors.toList());
```
这里使用了map方法,将每个Person对象的age属性加上10,然后使用collect方法将修改后的Person对象重新收集到一个新的List集合中。注意,由于Java中的Stream是一个惰性求值的操作,因此需要使用collect方法将修改后的结果收集到一个新的List集合中,否则原始集合中的对象不会被修改。
相关问题
使用stream流去除list集合的某个字段
可以使用Java 8中的Stream API和Lambda表达式来实现去除List集合中某个字段的操作。
假设我们有一个Student类,其中包含id、name和age字段,我们想要去除List<Student>中的name字段,可以使用以下代码:
```java
List<Student> students = // 获取List<Student>对象
List<String> names = students.stream()
.map(Student::getName)
.collect(Collectors.toList());
```
上面的代码中,我们首先通过stream()方法将List<Student>转换为流,然后使用map()方法将每个Student对象映射为其name字段,最后使用collect()方法将所有的name字段收集到一个List<String>对象中。
如果你想保留除去的字段,可以使用以下代码:
```java
List<Student> students = // 获取List<Student>对象
List<Student> result = students.stream()
.map(s -> new Student(s.getId(), s.getAge()))
.collect(Collectors.toList());
```
上面的代码中,我们首先通过stream()方法将List<Student>转换为流,然后使用map()方法将每个Student对象映射为一个新的Student对象,新的Student对象中只包含id和age字段,最后使用collect()方法将所有的新的Student对象收集到一个List<Student>对象中。
java stream 将对象集合中的某个字段抽成list
假设我们有一个对象集合 `List<Person>`,其中每个 `Person` 对象都有一个 `name` 字段,我们想要将所有人的名字抽取出来成为一个 `List<String>`。可以使用 Java 8 的 Stream API 来实现:
```java
List<Person> personList = ...;
List<String> nameList = personList.stream()
.map(Person::getName)
.collect(Collectors.toList());
```
上面的代码中,首先通过 `stream()` 方法将 `personList` 转换成一个流,然后使用 `map()` 方法将每个 `Person` 对象映射成其 `name` 字段,最后使用 `collect()` 方法将所有的名字收集成一个 `List<String>`。其中 `Person::getName` 是一个方法引用,表示获取 `Person` 对象的 `name` 字段。
阅读全文