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

相关文章
|
2月前
|
存储 设计模式 算法
stack和queue及优先级队列和适配器(包括deque)的介绍
stack和queue及优先级队列和适配器(包括deque)的介绍
28 1
|
7月前
|
存储 设计模式 算法
【C++】stack & queue
【C++】stack & queue
326 0
【C++】stack & queue
|
6月前
Optional没有peek函数?自己写一个
Optional没有peek函数?自己写一个
38 0
|
6月前
|
设计模式 存储 C++
C++ Stack&queue&deque
C++ Stack&queue&deque
|
9月前
|
前端开发
队列与栈(Queue,Deque,Stack)
队列与栈(Queue,Deque,Stack)
28 0
|
10月前
|
存储 设计模式 算法
stack,queue
stack,queue
64 0
|
11月前
|
存储
栈和队列(stack和queue)
栈和队列(stack和queue)
还在stream中使用peek?不要被这些陷阱绊住了
自从JDK中引入了stream之后,仿佛一切都变得很简单,根据stream提供的各种方法,如map,peek,flatmap等等,让我们的编程变得更美好。 事实上,我也经常在项目中看到有些小伙伴会经常使用peek来进行一些业务逻辑处理。 那么既然JDK文档中说peek方法主要是在调试的情况下使用,那么peek一定存在着某些不为人知的缺点。一起来看看吧。
|
存储 编译器 C++
【C++】stack、queue和deque(上)
【C++】stack、queue和deque(上)
【C++】stack、queue和deque(上)