stream流 将一个list<对象>转成另一个list<对象>
时间: 2023-12-05 22:04:06 浏览: 196
可以使用 Java 8 中的 Stream API 来实现将一个 List\<对象\> 转成另一个 List\<对象\> 的操作。
假设我们有一个 Student 类,其中包含姓名 name 和年龄 age 两个属性。现在我们有一个 List<Student>,我们想要将其中年龄大于等于 18 岁的学生筛选出来,并将他们的姓名添加到一个新的 List<String> 中。
可以使用以下代码完成上述操作:
```java
List<Student> students = new ArrayList<>();
// 添加学生到 students 列表中
List<String> names = students.stream()
.filter(s -> s.getAge() >= 18) // 筛选年龄大于等于 18 岁的学生
.map(Student::getName) // 获取学生的姓名
.collect(Collectors.toList()); // 将学生姓名添加到一个新的列表中
```
在上述代码中,我们使用 `stream()` 方法将 List<Student> 转换为一个 Stream<Student>,然后使用 `filter()` 方法筛选出年龄大于等于 18 岁的学生,接着使用 `map()` 方法获取学生的姓名,最后使用 `collect()` 方法将学生姓名添加到一个新的 List<String> 中。
相关问题
stream 流将一个LIST<object>转化成List<String>
你可以使用Java 8的Stream API将List<Object>转换为List<String>,示例代码如下:
```
List<Object> objects = Arrays.asList("hello", 123, true);
List<String> strings = objects.stream()
.map(Object::toString)
.collect(Collectors.toList());
System.out.println(strings); // ["hello", "123", "true"]
```
这里使用了Stream的map方法将每个对象转换为它的字符串表示形式,并使用collect方法将结果收集到一个List<String>中。
stream流 把一个list<对象>某些元素赋值后转换成另一个list对象
可以使用Java 8的Stream API来实现这个需求。以下是一个示例代码:
假设我们有一个Person类,其中包含id、name和age三个属性:
```
public class Person {
private int id;
private String name;
private int age;
// 构造函数、getter和setter方法省略
}
```
现在我们有一个包含多个Person对象的List,我们要把其中年龄大于等于18岁的Person对象的名字改成"成年人",并转换成另一个List,可以使用以下代码:
```
List<Person> persons = ...; // 假设已经初始化了Persons列表
List<Person> adultPersons = persons.stream()
.filter(p -> p.getAge() >= 18) // 过滤出年龄大于等于18岁的Person对象
.peek(p -> p.setName("成年人")) // 把名字改成"成年人"
.collect(Collectors.toList()); // 转换成List对象
```
上述代码中,首先调用`stream()`方法把List转换成Stream对象,然后通过`filter()`方法过滤出符合条件的元素,再通过`peek()`方法对每个元素执行指定的操作,最后通过`collect()`方法把Stream转换成List对象。
阅读全文