小编Ada*_*ord的帖子

突变流中的元素

是否有一个"最佳实践"来改变流中的元素?我特指的是流管道中的元素,而不是它之外的元素.

例如,考虑我想获取用户列表,为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)

java java-8 java-stream

7
推荐指数
2
解决办法
3999
查看次数

标签 统计

java ×1

java-8 ×1

java-stream ×1