- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否有可能使用 Java 8 流 API 创建直到需要时才评估的流?
我是说。
我有一个处理元素列表的流,在其中一个中间操作(映射)中,我必须读取另一个流,我希望将该流放在另一个变量中,以供所有其他第一个流对象使用,但如果没有要处理的对象,我想避免处理第二个流。
我认为用代码检查更容易:
Message[] process(@Nullable Message[] messages) {
Stream<Function> transformationsToApply =
transformations
.stream()
.filter(transformation -> transformationIsEnabled(transformation.getLeft()))
.map(Pair::getRight);
return Arrays.stream(messages != null ? messages : new Message[0])
.filter(Objects::nonNull)
.map(agentMessage -> {
transformationsToApply.forEach(transformation -> processMessage(transformation, agentMessage));
return agentMessage;
})
.toArray(Message[]::new);
}
我怀疑第一个流生成,我想根据我处理的列表返回流,但我只想在要使用它时这样做(并且对所有消息元素使用相同的)。
任何想法..?
最佳答案
别担心,在您附加 terminal operation 之前,您的 transformationsToApply
不会被评估.
Intermediate operations return a new stream. They are always lazy; executing an intermediate operation such as filter() does not actually perform any filtering, but instead creates a new stream that, when traversed, contains the elements of the initial stream that match the given predicate. Traversal of the pipeline source does not begin until the terminal operation of the pipeline is executed.
关于java - 懒惰地与供应商创建java流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50466096/
Java 文档说 CompletableFuture:supplyAsync(Supplier supplier)在 ForkJoinPool#commonPool() 中运行任务而 Completa
我正在尝试设置 IVR,或者更具体地说是使用 Asterisk 的自动接线员。除了简单的自动菜单系统之外,我不想要任何花哨的东西,而不是调用分机(现在),如果按下 1,只需调用同一条电话线 (POTS
当我尝试从 Symfony2 项目根运行以下命令时 php bin/vendors install 我收到以下错误: Could not open input file: bin/vendors 我对
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
我正在开发一个涉及用户位置检测的 Android 应用程序。我想知道的是,这个 -> LocationManager.GPS_PROVIDER 是如何工作的? 它是使用手机中的 GPS 系统还是使用移
我不知道如何编写代码以在可能的情况下选择网络提供商,或者如果网络不可用则选择 GPS 提供商。我怎样才能改变代码来得到这个。这是我的第一个 Android 应用程序,我尝试这样做但没有成功。 pack
我不是 MySQL 专家,我必须为我的水平设计一个相当复杂的数据库。 我现在面临的问题在于同一个表(公司的宏观类别)中存在供应商-客户关系: 宏表 id name mega_i
我希望至少有人能在这里为我指明正确的方向。 我的业务需要开放式身份验证。 但是,不要使用其他服务,如facebook 或 google 等。 我们有一个成员(member)数据库 - 一个标准的 as
如果我需要一个变量的 ThreadLocal,是否还需要使用 Supplier(也是线程安全的)? 例如,Supplier 是否不需要在这里实现线程安全? private ThreadLocal> m
我在 brunch@1.7.6 没有编译 bower_component css 文件时遇到问题。类似于 Separating app and vendor css in Brunch .只有 css
我正在使用 select2在 angular 项目中(使用自耕农)。 Select2 css 位于以下目录中: bower_components/select2/select2.css bower_c
在我的 Rails 应用程序目录中,vendor/plugins 和 vendor/assets/stylesheets 存在(两者都是空的)。我想创建 javascripts 文件夹。我可以手动创建
我的代码 fragment 是: mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); if
我继承了一个 Hadoop 安装,我很想知道以前的管理员是如何安装它的,它是从哪里来的。我是 Hadoop 的新手,但似乎以前的管理员简单地从源代码安装了 Apache Hadoop(而不是使用 Cl
我是 Ionic 2 的新手,正在尝试学习所有介绍如何添加提供程序的在线教程。 Ionic 似乎更改了生成的应用程序结构。有人可以给我一个例子,说明如何使用当前的 Ionic 2 应用程序结构执行此操
为什么供应商只支持无参数构造函数? 如果存在默认构造函数,我可以这样做: create(Foo::new) 但是如果唯一的构造函数需要一个字符串,我必须这样做: create(() -> new Fo
我已经通过 docker-compose 构建了一个容器,这里是 .yml: gateway: build: . image: sng container_name: sn
虽然不是直接的编程问题,但我想我可以在这里找到最佳答案。 为什么 USB-IF 监管供应商 ID 的使用并出售它们? 想要编写开源驱动程序的人或想要 2,000 美元会产生巨大影响的小公司会发生什
我正在使用 laravel-analytics ( https://github.com/spatie/laravel-analytics/ ) 并已在本地安装了所有内容,工作正常。 但是,每当我尝试
有没有一种方法/测试工作流程 - 如果我想从 gui 读取字符串内容并将其放入 ArrayList 中,然后将其写入 .xlsx 文件并使用该文件作为数据提供程序。如果是的话,我可以获得它的@test
我是一名优秀的程序员,十分优秀!