我对“ suppressWhen(...)”和“ filter(...)”这两种方法有疑问,如果在上下文中使用它们有什么区别,例如:我有一个布尔属性,如:BooleanProperty bp = new SimpleBooleanProperty();而且我有一些像这样的价值观:var.values()...如果我要过滤流,是否有任何区别,BooleanProperty bp例如:var.values().suppressWhen(bp.not())...或者var.values().filter(val -> bp.getValue())...可以肯定的是,“ suppressWhen”创建了“ SuspendedWhenStream”的实例并使用了“ SuspendableEventStream”,所以最好问一下在这里最有意义的是什么?创建额外的“ SuspendableEventStream”或类似的东西效率更高吗?
1 回答
![?](http://img1.sycdn.imooc.com/5458655200013d9802200220-100-100.jpg)
噜噜哒
TA贡献1784条经验 获得超7个赞
在这里最有意义的是什么?
明确地使用suppressWhen
,仅仅是因为它是为该用例设计的。您可以直接提供绑定,而无需手动对其进行评估。使用filter
将是一种hack,因为它旨在决定流中的每个元素,而不是整个流。
效率更高[?]
好吧,可以肯定的是,您需要自己测试执行速度,但是我敢肯定,使用suppressWhen
效率更高:
即使创建新流(或通常是新对象)可能首先需要额外的资源,也将在以后保存这些资源。使用filter
,必须为流中的每个新事件元素评估条件,但是使用suppressWhen
,仅在需要时才对其进行评估(自动)。
添加回答
举报
0/150
提交
取消