来个list.stream().map案例
时间: 2023-10-18 16:24:16 浏览: 37
好的,这里给您提供一个简单的案例:
假设有一个List存储了学生的信息,每个学生有姓名和年龄两个属性,现在需要将年龄属性加上10后重新生成一个List。可以使用Java8中的Stream和map方法来实现:
```java
List<Student> students = new ArrayList<>();
students.add(new Student("Tom", 18));
students.add(new Student("Jerry", 20));
students.add(new Student("Mary", 19));
List<Student> newStudents = students.stream()
.map(s -> {
s.setAge(s.getAge() + 10);
return s;
})
.collect(Collectors.toList());
```
上述代码中,首先通过stream()方法将List转化为Stream对象,接着使用map()方法将每个学生对象的年龄加上10,最后通过collect()方法将处理后的学生对象重新生成一个List。
相关问题
java两个Map集合Stream为一个list集合最优案例
假设有两个Map集合,分别是map1和map2,我们想要将它们合并为一个List集合,可以使用Java 8的Stream API,代码如下:
```
List<String> list = Stream.concat(map1.entrySet().stream(), map2.entrySet().stream())
.map(entry -> entry.getKey() + ":" + entry.getValue())
.collect(Collectors.toList());
```
上面的代码先使用Stream.concat()方法将两个Map的entrySet的Stream合并为一个Stream,然后使用map()方法将每个entry转换为一个字符串,再使用collect()方法将结果收集到一个List集合中。
需要注意的是,Map集合中的key和value需要根据实际情况进行转换为字符串的操作。
Collectors.toMap的使用案例
Collectors.toMap是Java 8中提供的一个用于将流(Stream)中的元素映射为Map的收集器。它可以根据指定的键和值的提取函数,将流中的元素转化为一个Map对象。
下面是一个使用Collectors.toMap的简单示例:
假设有一个Person类,包含id和name两个属性:
```java
class Person {
private int id;
private String name;
public Person(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
```
现在有一个Person列表,我们想将其转化为一个以id为键,name为值的Map对象:
```java
List<Person> personList = Arrays.asList(
new Person(1, "Alice"),
new Person(2, "Bob"),
new Person(3, "Charlie")
);
Map<Integer, String> personMap = personList.stream()
.collect(Collectors.toMap(Person::getId, Person::getName));
System.out.println(personMap);
```
输出结果为:
```
{1=Alice, 2=Bob, 3=Charlie}
```
在上述示例中,我们使用了Person类的getId方法作为键提取函数,getName方法作为值提取函数。通过调用Collectors.toMap方法,将流中的元素转化为一个以id为键,name为值的Map对象。