配列の基本的な使い方
配列(scala.Array)の基本的な使い方についてまとめ。
生成
「new Array[<要素の型>](<サイズ>)」で生成。
// 生成 var array = new Array[Int](5)
n番目の要素の設定
「配列(<インデックス>) = <値>」を使う。「[]」じゃないよ!
// n番目の要素を設定 array(2) = 20 // 2番目の要素を20に。 array.update(3, 30) // update(n, value)でも同じことができる // 確保したサイズ外にはアクセスできない。動的に拡張されたりはしない。 // array(5) = 50 // これはArrayIndexOutOfBoundsException
n番目の要素の取り出し
値の設定と同様に「配列(<インデックス>)」で取り出し。
// n番目の要素を取得 println( array(2) ) // 20 println( array.apply(3) ) // 30 // apply(n)でも同じことができる // 設定と同じく確保したサイズ外にはアクセスできない。 // println( array(5) ) // これはArrayIndexOutOfBoundsException
要素数を取得
// 要素数の取得 println( array.size ) // 5 println( array.length ) // 5
引数と合致する最初の要素のインデックスを取得
// 要素数の取得 // 引数と合致する最初の要素のインデックスを取得 println( array.indexOf( 20 ) ) // 2 println( array.indexOf( 100 ) ) // -1 // 要素が存在しない場合-1が返される。
要素の列挙
Rubyライクな列挙関数が使えます。
array.foreach( (i:Int) => {
println( i )
})
実行結果です。
0 0 20 30 0
ほかにも、map( 各要素に対して、ブロックを適用した結果の配列を返す )とかfilter( 条件にマッチする要素だけを選択する )とかも使えます。
// mapとかもある。 println( "\n-- map" ) var tmp = array.map( (i:Int) => { i*2 } ) tmp.foreach( (i:Int) => { println( i ) }) // あと、filterとか。 println( "\n-- filter" ) tmp = array.filter( (i:Int) => { i > 0 } ) tmp.foreach( (i:Int) => { println( i ) })
実行結果です。
-- map 0 0 40 60 0 -- filter 20 30
他のAPIについては、リファレンスを参照。(→ Scala Library Documentation - scala.Array)ほかにもいろいろあります。