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)