Scala:(Array [Int],Array [Int])=>数组[Int] by +

时间:2018-04-24 14:14:27

标签: arrays scala indexoutofboundsexception

所以,我想通过添加相同索引的值来“合并”两个Array [Int]。 应该是这样的:

newarray(0) = array1(0)+array2(0)...
f.e. Array(1,2,3)+Array(1,1,1,1,1) = Array(2,3,4,1,1)

我写道:

(array1, array2).zipped.map(_+_)

但是这显然会抛出一个ArrayIndexOutOfBoundsexception array1.length!= array2.length。

我也在寻找最聪明最短解决方案。

1 个答案:

答案 0 :(得分:2)

让你入门的建议可能是这样的:

val v1 = Seq(1, 2, 3, 4)
val v2 = Seq(1, 2, 3, 4, 5)
val v3 = v1.zip(v2).map(_+_)
println(s"V3: $v3")

这将产生以下输出,其中忽略v2的最后一个元素:

V3: List(2, 4, 6, 8)

但是,如果要默认为特定值,可以使用zipAll,如下所示:

val v1 = Seq(1, 2, 3, 4)
val v2 = Seq(1, 2, 3, 4, 5)
val v3 = v1.zipAll(v2, 0, 0).map(_+_)
println(s"V3: $v3")

这将为您提供以下输出,其中较短的数组填充值为零:

V3: List(2, 4, 6, 8, 5)
编辑:我看到你澄清了你的问题了。您似乎正在寻找第二个选项,使用zipAll。