为了账号安全,请及时绑定邮箱和手机立即绑定

什么时候使用“ suppressWhen(…)”或“ filter(…)”?

什么时候使用“ suppressWhen(…)”或“ filter(…)”?

弑天下 2021-05-14 14:10:43
我对“ 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 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

在这里最有意义的是什么?

明确地使用suppressWhen,仅仅是因为它是为该用例设计的。您可以直接提供绑定,而无需手动对其进行评估。使用filter将是一种hack,因为它旨在决定流中的每个元素,而不是整个流。

效率更高[?]

好吧,可以肯定的是,您需要自己测试执行速度,但是我敢肯定,使用suppressWhen效率更高:

即使创建新流(或通常是新对象)可能首先需要额外的资源,也将在以后保存这些资源。使用filter,必须为流中的每个新事件元素评估条件,但是使用suppressWhen,仅在需要时才对其进行评估(自动)。


查看完整回答
反对 回复 2021-05-26
  • 1 回答
  • 0 关注
  • 138 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信