如何对较长的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)
//...

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

相关推荐
9稳2 分钟前
基于单片机的家庭安全系统设计
开发语言·网络·数据库·单片机·嵌入式硬件
JQLvopkk2 分钟前
C#调用Unity实现设备仿真开发浅述
开发语言·unity·c#
2501_915918412 分钟前
iOS App 测试方法,Xcode、TestFlight与克魔(KeyMob)等工具组合使用
android·macos·ios·小程序·uni-app·iphone·xcode
每天吃饭的羊6 分钟前
hash结构
开发语言·前端·javascript
一路往蓝-Anbo7 分钟前
第37期:启动流程(二):C Runtime (CRT) 初始化与重定位
c语言·开发语言·网络·stm32·单片机·嵌入式硬件
CryptoRzz8 分钟前
如何高效对接美股实时行情?StockTV API 实战集成指南
java·python·flask·区块链·maven·symfony
Jackson@ML10 分钟前
2026最新版Python 3.14.2安装使用指南
开发语言·python
橘子师兄13 分钟前
C++AI大模型接入SDK—ChatSDK使用手册
开发语言·c++·人工智能
txinyu的博客14 分钟前
STL string 源码深度解析
开发语言·c++
Channing Lewis16 分钟前
正则灾难性回溯(catastrophic backtracking)
开发语言·python