用于循环创建相邻元素的元组

时间:2018-01-30 09:16:03

标签: scala

我有一个数组

[1,2,2,3,4,6,2,4,6,8,2,3,5]

我想使用for循环遍历此数组以获取相邻元素的元组集合。我应该如何在Scala中编码?

预期产出:

1-2|2-2|2-3|3-4|4-6|6-2|2-4|4-6|6-8|8-2|2-3|3-5

2 个答案:

答案 0 :(得分:1)

在scala中,你有sliding功能。

scala> val arr = Array(1,2,2,3,4,6,2,4,6,8,2,3,5)
arr: Array[Int] = Array(1, 2, 2, 3, 4, 6, 2, 4, 6, 8, 2, 3, 5)

scala> arr.sliding(2).foreach(tuple => println(tuple.mkString(" ")))
1 2
2 2
2 3
3 4
4 6
6 2
2 4
4 6
6 8
8 2
2 3
3 5

scala> arr.sliding(2).map(tuple => tuple.mkString("-")).mkString("|")
res10: String = 1-2|2-2|2-3|3-4|4-6|6-2|2-4|4-6|6-8|8-2|2-3|3-5

答案 1 :(得分:1)

如果您想要评论中提到的1-2|2-2|2-3|3-4|........输出,可以尝试按照

进行操作
val arr = Array(1,2,2,3,4,6,2,4,6,8,2,3,5)

//here first separate array elements by - then whole array by | 
val str = arr.sliding(2).map(_.mkString("-")).mkString("|")

print(str)

//output
//1-2|2-2|2-3|3-4|4-6|6-2|2-4|4-6|6-8|8-2|2-3|3-5