sliding
コレクションへのスライディングウィンドウを提供します。つまり、
scala> Array(1,2,2,4,5,6, 6).sliding(2).toList
res12: List[Array[Int]] = List(Array(1, 2), Array(2, 2), Array(2, 4), Array(4, 5), Array(5, 6), Array(6, 6))
したがって、最初に一致するペアのインデックスを簡単に見つけることができます。
Array(1,2,2,4,5,6, 6).sliding(2).indexWhere { case Array(x1, x2) => x1 == x2 }
それはあなたに最初のインデックスを与えるだけです、collect
それらをすべてキャッチするために使用してください!
Array(1,2,2,4,5,6, 6)
.sliding(2) //splits each in to pairs
.zipWithIndex //attaches the current index to each pair
.collect { case (Array(x1, x2), index) if (x1 == x2) => index } //collect filters out non-matching pairs AND transforms them to just the inde