猿问

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

我对“ 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”或类似的东西效率更高吗?


弑天下
浏览 140回答 1
1回答

噜噜哒

在这里最有意义的是什么?明确地使用suppressWhen,仅仅是因为它是为该用例设计的。您可以直接提供绑定,而无需手动对其进行评估。使用filter将是一种hack,因为它旨在决定流中的每个元素,而不是整个流。效率更高[?]好吧,可以肯定的是,您需要自己测试执行速度,但是我敢肯定,使用suppressWhen效率更高:即使创建新流(或通常是新对象)可能首先需要额外的资源,也将在以后保存这些资源。使用filter,必须为流中的每个新事件元素评估条件,但是使用suppressWhen,仅在需要时才对其进行评估(自动)。
随时随地看视频慕课网APP

相关分类

Java
我要回答