zl程序教程

您现在的位置是:首页 > 

当前栏目

you might not need peek

not you need peek might
2023-06-13 09:11:17 时间

上代码

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中进行操作会改变原集合对象