如何对较长的Stream链进行Debug

java 复制代码
Map<String, Integer> map = new HashMap<>();
        map.put("zhangsan", 1);
        map.put("lisi", 2);
        map.put("wangwu", 3);
        map.put("zhaoliu", 4);
        map.put("tianqi", 5);
        map.put("sunba", 5);
        map.put("zhouba", 5);
        List<String> result = map.entrySet().stream()
                .filter(e -> e.getValue() >= 5) // 过滤value >= 25
                .collect(Collectors.toMap(
                        Map.Entry::getKey,      // key -> age
                        Map.Entry::getValue,    // value -> name
                        (existing, replacement) -> existing // 去重保留第一次出现
                ))
                .entrySet().stream()
                .sorted((e1, e2) -> e2.getKey().compareTo(e1.getKey())) // 按age降序
                .limit(3)
                .map(e -> e.getValue() + "(" + e.getKey() + ")")
                .collect(Collectors.toList());
        System.out.println("relust=========" + result);
    }

常规调试:

在这里加断点

无法看到流转过程,不便于排查

方式一:

在流的开头和结尾分别加断点,启动debug:

点击最右侧按钮

点进去就可以看到清晰的流转过程。

方式二:

使用.peek()输出日志

java 复制代码
//...
.sorted((e1, e2) -> e2.getKey().compareTo(e1.getKey())) // 按age降序
.peek(System.out::println)
.limit(3)
//...

来展示一些中间的流转过程

相关推荐
程序员小假6 分钟前
我们来说一下 b+ 树与 b 树的区别
java·后端
阿贵---24 分钟前
C++中的RAII技术深入
开发语言·c++·算法
Traced back30 分钟前
怎么用 Modbus 让两个设备互相通信**,包含硬件接线、协议原理、读写步骤,以及 C# 实操示例。
开发语言·c#
Meepo_haha38 分钟前
Spring Boot 条件注解:@ConditionalOnProperty 完全解析
java·spring boot·后端
sheji34161 小时前
【开题答辩全过程】以 基于springboot的房屋租赁系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
木井巳1 小时前
【递归算法】子集
java·算法·leetcode·决策树·深度优先
钛态2 小时前
Flutter 三方库 http_mock_adapter — 赋能鸿蒙应用开发的高效率网络接口 Mock 与自动化测试注入引擎(适配鸿蒙 HarmonyOS Next ohos)
android·网络协议·flutter·http·华为·中间件·harmonyos
王码码20352 小时前
Flutter for OpenHarmony:Flutter 三方库 algoliasearch 毫秒级云端搜索体验(云原生搜索引擎)
android·前端·git·flutter·搜索引擎·云原生·harmonyos
左手厨刀右手茼蒿2 小时前
Flutter for OpenHarmony: Flutter 三方库 shamsi_date 助力鸿蒙应用精准适配波斯历法(中东出海必备)
android·flutter·ui·华为·自动化·harmonyos