Scala集合选择元素,直到第一个满足要求

ttt*_*ttt 2 scala

例如,我有跟随Scala列表,我想获得一个子列表,直到有一个要求可以满足.

val list = Seq(1,2,3,4,5,5,4,1,2,5)
Run Code Online (Sandbox Code Playgroud)

要求是数字是5,所以我希望结果如下:

Seq(1,2,3,4)
Run Code Online (Sandbox Code Playgroud)

目前我使用Scala集合indexWhere并splitAt返回:

list.splitAt(list.indexWhere(x => x == 5))

(Seq(1,2,3,4), Seq(5,5,4,1,2,5))
Run Code Online (Sandbox Code Playgroud)

我不确定有更好的方法来实现相同的更好的Scala集合的方法,我没有意识到?

End*_*Neu 7

你可以使用takeWhile:

scala> val list = Seq(1,2,3,4,5,5,4,1,2,5)
list: Seq[Int] = List(1, 2, 3, 4, 5, 5, 4, 1, 2, 5)

scala> list.takeWhile(_ != 5)
res30: Seq[Int] = List(1, 2, 3, 4)
Run Code Online (Sandbox Code Playgroud)