you might not need peek

简介: you might not need peek

正因为

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

相关文章
|
8月前
|
存储 设计模式 算法
stack和queue及优先级队列和适配器(包括deque)的介绍
stack和queue及优先级队列和适配器(包括deque)的介绍
78 1
|
设计模式 存储 C++
C++ Stack&queue&deque
C++ Stack&queue&deque
|
Python
双端队列(Deque,全称:Double-ended Queue)
双端队列(Deque,全称:Double-ended Queue)是一种线性数据结构,它允许在队列的两端进行插入和删除操作。与普通队列(只能在尾部插入,在头部删除)和栈(只能在尾部插入,在头部删除)不同,双端队列可以在两端进行插入和删除操作。
111 1
Optional没有peek函数?自己写一个
Optional没有peek函数?自己写一个
76 0
Stream方法使用-peek和foreach方法讲解
Stream方法使用-peek和foreach方法讲解
386 0
|
前端开发
队列与栈(Queue,Deque,Stack)
队列与栈(Queue,Deque,Stack)
54 0
|
存储
栈和队列(stack和queue)
栈和队列(stack和queue)
|
设计模式 存储 C++
【C++】stack、queue和deque(下)
【C++】stack、queue和deque(下)
【C++】stack、queue和deque(下)
|
存储 编译器 C++
【C++】stack、queue和deque(上)
【C++】stack、queue和deque(上)
【C++】stack、queue和deque(上)