java - Java:流中的消费者接口无法按预期工作
问题描述
我有 2 条语句,我希望它们应该“打印”相同的结果:
Arrays.stream("abc".split("")).forEach(System.out::println);//first
Arrays.stream("abc".split("")).peek(new Consumer<String>() {//second
@Override
public void accept(String s) {
System.out.println(s);//breakpoint
}
});
事实上,第一条语句将打印
a
b
c
好的,但是第二条语句什么也没打印。我试图在 IntelliJ 内的“//断点”行中设置一个断点,但没有命中。
那么我应该如何更改第二条语句以使用“peek”,因为它在使用“Consumer”处理每个元素时创建一个新流?
非常感谢。
解决方案
peek()
不是终端操作,您需要添加任何终端操作才能使 peek 工作,例如
Arrays.stream("abc".split("")).peek(new Consumer<String>() { //second
@Override
public void accept(String s) {
System.out.println(s);//breakpoint
}
}).count();
推荐阅读
- hadoop - 将datanode和备份现有数据添加到Windows机器上的独立Hadoop
- snowflake-cloud-data-platform - SQL 查询以查找雪花帐户中可用的表数(包括所有数据库和模式)
- node.js - 代理问题 ENOTFOUND Create-React-App Http-Proxy-Middleware Express
- c++ - 扩展动态数组时出现字符串错误
- node.js - Electron 将 x509 证书导入本地钥匙串 (macOS) - 授权被拒绝,因为无法进行用户交互
- docker - 共享服务器上的 Rasa X 部署
- jquery - 将动态数据属性传递给 dhtmlxScheduler
- java - java HttpsServer 无法创建新的本机线程
- javascript - 插入带有 Chrome 扩展程序的网站的新路径
- python - 由于此错误,无法部署 Django 应用程序如何修复