Arrays 如何跟踪数组中的索引
在scala中对Arrays 如何跟踪数组中的索引,arrays,scala,sequence,sliding,Arrays,Scala,Sequence,Sliding,在scala中对数组使用滑动函数时,根据原始数组跟踪滑动子数组索引的正确方法是什么 // Initialize some data val bigArray = List(2, 3, 4, 2, 3, 6, 8, 4, 5).toArray val n:Int = 5 // Slide through the big array for (smallArray <- bigArray.sliding(n)) { val thirdValue:Int = smallArray(3)
数组
使用滑动
函数时,根据原始数组跟踪滑动子数组索引的正确方法是什么
// Initialize some data
val bigArray = List(2, 3, 4, 2, 3, 6, 8, 4, 5).toArray
val n:Int = 5
// Slide through the big array
for (smallArray <- bigArray.sliding(n)) {
val thirdValue:Int = smallArray(3)
val k = (bigArray zip smallArray) lastIndexWhere { case (x, y) => x < y }
if (bigArray(k+1) >= thirdValue) {
println(bigArray.toList.toString +
" has "
+ bigArray(k+1)
+ " >= "
+ thirdValue
+ " in "
+ smallArray.toList.toString
+ " at index "
+ k+1)
}
我需要
List(2, 3, 4, 2, 3, 6, 8, 4, 5) has 6 >= 2 in List(2, 3, 4, 2, 3) at index 5
List(2, 3, 4, 2, 3, 6, 8, 4, 5) has 8 >= 3 in List(3, 4, 2, 3, 6) at index 6
更新
我无法让
map
使用tuple2(Int,Int)
,该tuple2(Int,Int)来自公认答案中的head
,但是提到zipWithIndex
让我达到了目的,所以我接受了有用的答案。这就是我的结局:
for (zipArray <- bigArray.slice(0, bigArray.length - 1).zipWithIndex.sliding(n)) {
val j = zipArray.head._2
val k = zipArray.last._2
val smallArray = bigArray.slice(j, k)
val thirdValue:Int = smallArray(3)
if (bigArray(k+1) >= thirdValue) {
println(bigArray.toList.toString +
" has "
+ bigArray(k+1)
+ " >= "
+ thirdValue
+ " in "
+ smallArray.toList.toString
+ " at index "
+ (k+1) )
}
}
您可以在滑动之前使用zipWithIndex:
for (smallArrayWithIndex <- bigArray.zipWithIndex.sliding(n)) {
val startingIndex = smallArrayWithIndex.head.map { case (_, index) => index }
val smallArray = smallArrayWithIndex.map { case (e, _) => e }
println("smallArray starts at index " + index + " and contains " + smallArray)
}
for(smallArrayWithIndex索引}
val smallArray=smallArrayWithIndex.map{case(e,))=>e}
println(“smallArray从索引“+index+”开始,包含“+smallArray”)
}
您可以在滑动之前使用zipWithIndex
:
for (smallArrayWithIndex <- bigArray.zipWithIndex.sliding(n)) {
val startingIndex = smallArrayWithIndex.head.map { case (_, index) => index }
val smallArray = smallArrayWithIndex.map { case (e, _) => e }
println("smallArray starts at index " + index + " and contains " + smallArray)
}
for(smallArrayWithIndex索引}
val smallArray=smallArrayWithIndex.map{case(e,))=>e}
println(“smallArray从索引“+index+”开始,包含“+smallArray”)
}
谢谢。我需要做什么才能让标准的映射
作用于smallArrayWithIndex.head
即(Int,Int)
。我无法得到map
来解决问题,但您对zipWithIndex
的帮助最终让我达到了目的。谢谢。谢谢。谢谢。我需要做些什么才能让标准map
作用于smallArrayWithIndex.head
,即(Int,Int)
。我无法得到map
来解决问题,但您对zipWithIndex
的帮助最终让我达到了目的。谢谢。
List(2, 3, 4, 2, 3, 6, 8, 4, 5) has 6 >= 2 in List(2, 3, 4, 2) at index 5
List(2, 3, 4, 2, 3, 6, 8, 4, 5) has 8 >= 3 in List(3, 4, 2, 3) at index 6
for (smallArrayWithIndex <- bigArray.zipWithIndex.sliding(n)) {
val startingIndex = smallArrayWithIndex.head.map { case (_, index) => index }
val smallArray = smallArrayWithIndex.map { case (e, _) => e }
println("smallArray starts at index " + index + " and contains " + smallArray)
}