Scalaチュートリアル(四)配列進級実戦

7771 ワード


Scalaチュートリアル(四)配列進級実戦
1配列Array
1.1配列の定義
配列とは、同じデータ型の要素が一定の順序で並べられた集合であり、有限個のタイプの同じ変数を1つの名前で命名し、それらの変数の集合を番号で区別することであり、この名前を配列名、番号を下付きと呼ぶ.
  //   Int  、String    
  val number = new Array[Int](10);                //> number  : Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
  val stringArray = new Array[String](10);        //> stringArray  : Array[String] = Array(null, null, null, null, null, 
                                                  //| null,null, null, null, null)

1.2宣言と付与
  //      
  val strArray = Array("Hello","world")           //> strArray  : Array[String] = Array(Hello, world)
  strArray(0) = "One"
  strArray                                        //> res0: Array[String] = Array(One, world)

1.3遍歴群
  // for      
  for(i <-0 until(stringArray.length)){
  		println(i+":"+stringArray(i))     //> 0:null
                                                  //| 1:null
                                                  //| 2:null
                                                  //| 3:null
                                                  //| 4:null
                                                  //| 5:null
                                                  //| 6:null
                                                  //| 7:null
                                                  //| 8:null
                                                  //| 9:null
   }

2動的配列ArrayBuffer
2.1動的配列の定義
  //     
  var buffer = new ArrayBuffer[Int]()             //> buffer  : scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()

2.2末端追加元素
  //  +=       
  buffer +=1                                      //> res1: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1)

2.3末端に複数の元素を追加する
  //          
  buffer +=(1,2,3,5)                              //> res2: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1,
                                                  //> 2, 3, 5)

2.4エンド追加集合
  //     ++=         
  buffer ++=Array(8,13,21)                        //> res3: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1, 2, 
                                                  //|  3, 5,8, 13, 21)

2.5要素の追加
  //   2        6
  buffer.insert(2, 6)
  buffer                                          //> res5: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1, 
                                                  //  | 6, 2)
  
  
  //   2          
  buffer.insert(2, 7,8,9)
  buffer                                          //> res6: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1, 
                                                  //|  7, 8, 9, 6, 2)

2.6要素の削除
	//       2   
  buffer.remove(2)                                //> res7: Int = 7
  buffer                                          //> res8: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1, 8,
                                                  //|  9, 6,2)
  //   3       3   
  buffer.remove(2, 3)
  buffer                                          //> res9: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1, 2)

2.7動的データを配列に変換
  //         Array
  buffer.toArray                                  //> res10: Array[Int] = Array(1, 1, 2)

3 yieldキーワードとソート
3.1 yieldキーワード
yieldキーワードforループのyieldは、現在の要素をメモしてコレクションに保存し、ループが終了するとそのコレクションに戻ります.Scalaではforループに戻り値があります.ループされているものがMapであれば,返されるものがMap,ループされるものがList,返されるものがListとなるように推す.
   
   //     
   val nums = Array(2,3,5,7,11)                   //> nums  : Array[Int] = Array(2, 3, 5, 7, 11)
   // nums     *2,       
   var result = for(elem <-nums) yield 2 * elem   //> result  : Array[Int] = Array(4, 6, 10, 14, 22)
   
   //   nums     2   0  , 2,      
   for(elem <-nums if elem %2  == 0) yield elem *2//> res11: Array[Int] = Array(4)
   nums.filter(_ % 2 == 0).map { 2*_}             //> res12: Array[Int] = Array(4)

3.2 Array求合
Array(1,7,2,9).sum                             //> res13: Int = 19

3.3配列内の最大長要素の取得
//            
ArrayBuffer("Mary","had","a","little","lamb").max

3.4並べ替え
   //   
   val order = ArrayBuffer(1,7,2,9)               //> order  : scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 
                                                  //| 7, 2, 9)
   val res = order.sorted                         //> res  : scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2,
<pre name="code" class="java">                    //| 7, 9)
 
  

3.5 quickSort排序

	//   
  val sortArr= Array(1,7,2,9)                     //> sortArr  : Array[Int] = Array(1, 7, 2, 9)
  Sorting.quickSort(sortArr)
  
  //   and     
  sortArr.mkString(" and ")                       //> res15: String = 1 and 2 and 7 and 9
  //    <>  ,   ,  
  sortArr.mkString("<",",",">")                   //> res16: String = <1,2,7,9>


4次元配列
4.1多次元配列の定義
  //     \      
  val multiArr = Array.ofDim[Double](3,4);        //> multiArr  : Array[Array[Double]] = Array(Array(0.0, 0.0, 0.0, 0.0), Array(0
                                                  //| .0, 0.0, 0.0, 0.0), Array(0.0, 0.0, 0.0, 0.0))
  multiArr(2)(1)=45
	multiArr                                  //> res17: Array[Array[Double]] = Array(Array(0.0, 0.0, 0.0, 0.0), Array(0.0, 0
                                                  //| .0, 0.0, 0.0), Array(0.0, 45.0, 0.0, 0.0))

 
4.2データネスト
  var triangle = new Array[Array[Int]](10)        //> triangle  : Array[Array[Int]] = Array(null, null, null, null, null,
                                                   //| null,null, null, null, null)
  for(i <-0 until triangle.length)
  	triangle(i) = new Array[Int](i+1)
  	triangle                                  //> res18: Array[Array[Int]] = 
                                                    //| Array(
                                                    //| Array(0),
                                                    //| Array(0, 0) ,
                                                    //| Array(0, 0, 0), 
                                                    //| Array(0, 0, 0, 0), 
                                                    //| Array(0, 0, 0, 0, 0),
                                                    //| Array(0, 0, 0, 0, 0, 0), 
                                                    //| Array(0, 0, 0, 0, 0, 0, 0), 
                                                    //| Array(0, 0, 0, 0, 0, 0, 0, 0), 
                                                    //| Array(0, 0, 0, 0, 0, 0, 0, 0, 0),
                                                    //| Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) 

    
--以上、配列進級実戦の内容でしたが、ご注目ありがとうございました.
                                                                                                                                                                              ——厚めの薄毛(yuanxw)