java - 是否可以在流函数中使用当前的流函数?
问题描述
例如我有一些字符串。我想将其按空格拆分,然后仅过滤长度大于流数的单词。请参阅下面的代码
Arrays.stream("Some important string".split(" "))
.filter(word->word.length>([HOW GET HERE STREAM COUNT??]))
任务是在一行中完成(没有外部变量)
解决方案
这是一个hack,我强烈反对使用,但你可以这样做:
String[] result = Stream.<String[]>of("Some important strings to test".split(" "))
.flatMap(words -> Stream.of(words).filter(word -> word.length() > words.length))
.toArray(String[]::new);
System.out.println(Arrays.toString(result));
如果你只使用一个变量,代码会好得多:
String[] words = "Some important strings to test".split(" ");
String[] result = Stream.of(words)
.filter(word -> word.length() > words.length)
.toArray(String[]::new);
System.out.println(Arrays.toString(result));
两者的输出
[important, strings]
如果问题不是关于如何使用由返回的数组来执行此操作split()
,而是实际上是字面问题“如何获取流计数”,那么答案是您不能。
即使您可以访问流,也不能调用count()
,因为这会消耗流并违背调用的目的。
推荐阅读
- spring-cloud - Spring Cloud Data Flow:版本化流
- sql - 表之间的SQL查询关系
- flutter - 在 Flutter 中的网格中动画项目删除
- c# - 使用 mongoDB 自动生成的 id
- python - 如何打印出屠夫算法python
- android - 删除项目后房间数据库显示错误数据
- java - 对象类型的 ArrayList 出现
- reactjs - Axios 不会根据我对我的 api 的请求设置 cookie
- r - 使用 R 将多个数据帧导出为 .csv 文件
- javascript - 如何使用ajax提交表单请求而不刷新页面并在laravel中返回消息?