に変換でき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
ます。
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)