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

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

相关推荐
杜子不疼.2 分钟前
PyPTO:面向NPU的高效并行张量编程范式
开发语言
qq_12498707532 分钟前
基于JavaWeb的大学生房屋租赁系统(源码+论文+部署+安装)
java·数据库·人工智能·spring boot·计算机视觉·毕业设计·计算机毕业设计
lly2024062 分钟前
C# 结构体(Struct)
开发语言
游戏开发爱好者87 分钟前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
短剑重铸之日8 分钟前
《设计模式》第十一篇:总结
java·后端·设计模式·总结
王码码203512 分钟前
Flutter for OpenHarmony 实战之基础组件:第三十一篇 Chip 系列组件 — 灵活的标签化交互
android·flutter·交互·harmonyos
YMWM_13 分钟前
python3继承使用
开发语言·python
黑码哥28 分钟前
ViewHolder设计模式深度剖析:iOS开发者掌握Android列表性能优化的实战指南
android·ios·性能优化·跨平台开发·viewholder
Once_day28 分钟前
C++之《程序员自我修养》读书总结(1)
c语言·开发语言·c++·程序员自我修养