2015-09-07 967 views
3

如何以其他方式將Array複製到另一個Array如何高效地將數組複製到另一個Scala中?

我的想法是使用=運算符。例如:

val A = Array(...) 
val B = A 

但這樣好嗎?

第二種方法是使用for loop,例如:

val A = Array(...) 
val B = new Array[](A.length)//here suppose the Type is same with A 
for(i <- 0 until A.length) 
    B(i) = A(i) 
+0

我想知道,如果有另一種方法來處理這個問題? – BranY

回答

11

您可以使用.clone

scala> Array(1,2,3,4) 
res0: Array[Int] = Array(1, 2, 3, 4) 

scala> res0.clone 
res1: Array[Int] = Array(1, 2, 3, 4) 
4

在這個例子dest是一個可變Array考慮Array.copy

val a = (1 to 5).toArray 
val dest = new Array[Int](a.size) 

a ND所以

dest 
Array[Int] = Array(0, 0, 0, 0, 0) 

那麼對於

Array.copy(a, 0, dest, 0, a.size) 

我們有

dest 
Array[Int] = Array(1, 2, 3, 4, 5) 

Scala Array API注斯卡拉Array.copy等同於Java的System.arraycopy,與多態陣列的支持。

4

最短和習慣的方法是使用mapidentity這樣的:

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

製作副本

scala> val b = a map(identity) 
b: Array[Int] = Array(1, 2, 3, 4, 5) 

修改複製

scala> b(0) = 6 

他們似乎不同

scala> a == b 
res8: Boolean = false 

與他們不同

scala> a 
res9: Array[Int] = Array(1, 2, 3, 4, 5) 

scala> b 
res10: Array[Int] = Array(6, 2, 3, 4, 5) 

這個副本將工作與所有的集合類型,而不僅僅是Array

+0

非常感謝!!一小時後搜索這就是我一直在尋找的! – elbaulp

相關問題