【发布时间】:2020-09-06 09:18:11
【问题描述】:
我想在 Scala 中实现一种方法,该方法从 Seq 元素中过滤,例如大于提供的值,并额外返回一个相等的元素。例如:
greaterOrEqual(Seq(1,2,3,3,4), 3) shouldBe Seq(3,4)
我最终得到了这样的方法:
def greaterOrEqual(
seq: ArrayBuffer[Long],
value: Long
): ArrayBuffer[Long] = {
val greater = seq.filter(_ > value)
val equal = seq.filter(_ == value)
if (equal.isEmpty) {
greater
} else {
equal.tail ++ greater
}
}
但不知何故,它对我来说看起来不太好:) 此外,我希望有这个方法的通用版本,我不仅可以使用 Long 类型,还可以使用自定义案例类。
你有什么建议吗? 提前致谢。
【问题讨论】:
-
你可以去掉
if,改成equal.take(1) ++ greater。这也适用于空的equal。或者甚至更好,val equal = seq.find(_ == value).toList然后只是equal ++ greater