你可以轉換Range
到Array
。
var arr2 = (0 until arr1.length).toArray
上採集方法indices
返回Range
:
var arr2 = arr1.indices.toArray
如果你有一個數組,要填充它,你可以使用copyToArray
方法:
(0 until arr2.length).copyToArray(arr2)
之間不存在性能差異此方法:toArray
通過方法copyToArray
爲implemented。
Range
只含有3 Int
領域:start
,end
和step
,所以幾乎沒有內存開銷。
還有方法range
在Array
對象:
val arr2 = Array.range(0, arr1.length) // contains 0, excludes arr1.length
也有一些其它方法來填充陣列。這種方法在這種情況下不是很有用。
方法fill
:
var i = -1
val arr2 = Array.fill(arr1.length)({i+=1; i})
方法apply
:
val arr2 = Array.apply(0, (1 until arr1.length): _*) // Array(0) on empty arr1
如果您還沒有Array
收集和你想改變它的元素,讓Array
你可以使用collection.breakOut
方法:
// this is not that case
val arr2: Array[Int] = (0 until arr1.length).map(identity)(breakOut)
它應該是 「直到」,而不是 「爲」,不應該嗎? –
@Grienders,謝謝你,你是對的。 – senia