正因为世界本身是平庸的,所以你也才平庸。——《寻羊冒险记》

上代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;


class Scratch {

public static void main(String[] args) {
class User {

private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
'}';
}
}
Map<Integer, List<User>> userMap = new HashMap<>();
userMap.put(1, Stream.generate(User::new).limit(3).collect(Collectors.toList()));

// 我以前的写法
userMap.put(1, userMap.get(1).stream().peek(u -> u.setName("吉良吉影")).collect(Collectors.toList()));

// 我今天发现实际上这么写就可以了
userMap.get(1).forEach(u -> u.setName("吉良吉影"));

userMap.get(1).forEach(System.out::println);

}

}

这是因为forEach中进行操作会改变原集合对象