Chapter 03配列関連アクション


1.定長配列
  • Scala定義はArrayに用いられ、以下のように定義される.
  •     val nums = new Array[Int](10)   // 10     ,    0,String    null
        val s = Array("hello", "world") //            new
        s(0)                            //       ()   []

    2.変長配列:配列バッファ
  • 変長配列はArrayBufferに用いられる.
  •     import scala.collection.mutable.ArrayBuffer//    
        val b = ArrayBuffer[Int]()                 //        
        b += 1                                     //        
        b += (1, 2, 3, 4)                          //          
        b ++= Array(7, 9, 8)                       // ++=          
        b.trimEnd(3)                               //     3   
        b.insert(2, 5)                             //   2    5
        b.insert(2, 4, 5, 8)                       //   2       
        b.remove(2)                                //  2     
        b.remove(2, 3)                             //  2       3   
        b.toArray                                  //  b ArrayBuffer  Array
        b.toBuffer                                 //  b Array  ArrayBuffer

    3.配列および配列バッファの遍歴
  • はforループを使用し、untilは上限未満(含まない)のすべての数字を返します.
  •     for (i <- 0 until b.length)
        {
            println(i + ": " + b(i)) // i  0 b.length-1
        }
  • は、下付き文字を使わずに配列に直接アクセスすることもできます.
  •     for (i <- b)
        { println(i) // i           }
  • は2つの数字ごとにジャンプし、iの遍歴は以下の通りである.
  •     0 until (b.lenght, 2)
  • 配列の末尾から、iの遍歴は以下の通りである.
  •     (0 until b.lenght).reverse

    4.配列変換
  • 変換はメタ配列を変更せず、新しい配列を生成する.for(...)yieldを用いて配列変換を行う.
  •     val result = for (elem <- b if elem % 2 == 0) yield 2 * elem //       ,       
    
        //         :
        b.filter(_ % 2 == 0).map(2 * _)
    
        //   
        b.filter { _ % 2 == 0} map { 2 * _ }

    5.一般的なアルゴリズム
  • の一般的なアルゴリズムは、
  • です.
        Array(1, 4, 8).sum      //     , ArrayBuffer   ,  max,min
        val a = b.sorted        // b    ,          a
        val c = b.sortWith(_>_) //   sortWith   b    
  • は、Arrayを直接ソートすることができるが、ArrayBufferをソートすることはできない.
  •     val a = Array(9, 3, 1)
        scala.util.Sorting.quickSort(a) // a   Array(1, 3, 9)
  • にはArrayまたはArrayBufferの内容が表示され、mkString、区切り記号、および接尾辞を指定できます.
  •     a.mkString(" and ")
        //"1 and 3 and 9"
        a.mkString("<", ",", ">")
        //"<1,3,9>

    6.多次元配列
  • はofDim法で2次元配列を構築する.
  •     val m = Array.ofDim[Double](3, 4) //   ,  
        m(row)(colum) = 2                 //     

    【続き】