是否有一个"最佳实践"来改变流中的元素?我特指的是流管道中的元素,而不是它之外的元素.
例如,考虑我想获取用户列表,为null属性设置默认值并将其打印到控制台的情况.
假设User类:
class User {
String name;
static User next(int i) {
User u = new User();
if (i % 3 != 0) {
u.name = "user " + i;
}
return u;
}
}
Run Code Online (Sandbox Code Playgroud)
在java 7中,它有点像:
for (int i = 0; i < 7; i++) {
User user = User.next(i);
if(user.name == null) {
user.name = "defaultName";
}
System.out.println(user.name);
}
Run Code Online (Sandbox Code Playgroud)
在java 8中,我似乎使用.map()并返回对mutated对象的引用:
IntStream.range(0, 7)
.mapToObj(User::next)
.map(user -> {
if (user.name == null) {
user.name = "defaultName";
}
return …Run Code Online (Sandbox Code Playgroud)