【发布时间】:2018-08-28 11:59:58
【问题描述】:
给定一个谓词(String) -> Boolean,我想知道是否有一种简单的方法可以否定该谓词的结果。
只要我使用列表,我就可以简单地从filter 切换到filterNot,但如果我有的话,比如说...Map 并使用filterKeys?
我目前使用的是:
val myPredicate : (String) -> Boolean = TODO()
val map : Map<String, String> = TODO()
map.filterKeys { !myPredicate(it) }
但我想知道为什么Collection 有一个重载的过滤器函数,而Map 却没有。此外,我还想知道,为什么没有类似于我们在 Java 中所拥有的东西,即 Predicate.negate() 和自 Java 11 以来的 Predicate.not(..)。
或者它是否存在而我只是没有找到它?
【问题讨论】:
-
filterNot也有Map:kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/… -
好的...我特别指的是
filterKeys和filterValues,还有任何其他接受~谓词的函数。是否存在问题中所示的简单便捷方法?如果不是会很有趣,为什么... -
其实这是一个非常有趣的问题。这可能是一个性能问题(或者我只是无法弄清楚):stackoverflow.com/q/52057967/3755692
标签: kotlin