我如何使用另一种方式将a复制Array到另一个Array?
我的想法是使用=运算符.例如:
val A = Array(...)
val B = A
Run Code Online (Sandbox Code Playgroud)
但这没关系?
第二种方法是使用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)
Run Code Online (Sandbox Code Playgroud)
小智 16
您可以使用 .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)
Run Code Online (Sandbox Code Playgroud)
Array.copy在这个例子中考虑哪里dest是可变的Array,
val a = (1 to 5).toArray
val dest = new Array[Int](a.size)
Run Code Online (Sandbox Code Playgroud)
所以
dest
Array[Int] = Array(0, 0, 0, 0, 0)
Run Code Online (Sandbox Code Playgroud)
然后为
Array.copy(a, 0, dest, 0, a.size)
Run Code Online (Sandbox Code Playgroud)
我们有
dest
Array[Int] = Array(1, 2, 3, 4, 5)
Run Code Online (Sandbox Code Playgroud)
从Scala Array API开始,注意Scala Array.copy等同于Java System.arraycopy,支持多态数组.
最短和习惯的方法是使用map具有identity这样的:
scala> val a = Array(1,2,3,4,5)
a: Array[Int] = Array(1, 2, 3, 4, 5)
Run Code Online (Sandbox Code Playgroud)
复制一份
scala> val b = a map(identity)
b: Array[Int] = Array(1, 2, 3, 4, 5)
Run Code Online (Sandbox Code Playgroud)
修改副本
scala> b(0) = 6
Run Code Online (Sandbox Code Playgroud)
他们似乎不同
scala> a == b
res8: Boolean = false
Run Code Online (Sandbox Code Playgroud)
他们是不同的
scala> a
res9: Array[Int] = Array(1, 2, 3, 4, 5)
scala> b
res10: Array[Int] = Array(6, 2, 3, 4, 5)
Run Code Online (Sandbox Code Playgroud)
此副本适用于所有集合类型,而不仅仅是Array.
| 归档时间: |
|
| 查看次数: |
11099 次 |
| 最近记录: |