scala学習ノート02-scalaにおける集合タイプ:Array、List、Map、tuple、Option

30677 ワード

scalaのArray:
Scalaは配列と呼ばれるデータ構造を提供し、配列は同じタイプの要素を格納する固定サイズの順序集合である.配列は、データ・セットを格納するために使用されますが、配列を同じタイプの変数と見なす集合は、通常より便利です.
	//     
	var arr01:Array[Int] = new Array[Int](10);
    var arr02 = new Array[String](10)
	//  
	for (x <- 0 to arr03.length-1) println(arr03(x))
	arr03.foreach(v => println(v))	
	arr03.foreach(println(_))
	//mkstring  
	//  ','      , ‘ <>’     
    println(arr03.mkString(",")) //1,2,3,4,5,6,7,8
    println(arr03.mkString(",",",">")) //<1,2,3,4,5,6,7,8>
	//       3  take()
    arr03.take(3).foreach(println(_))
	//      ****            ****
    concat(arr01,arr03).foreach(println(_))
	//     1 100     ,   3
	range(1,20).foreach(println(_))
    range(1,100,3).foreach(println(_))

scalaのArrayBuffer:
Array配列はjavaの配列と一致し、配列の長さは可変ではないが、scalaには可変配列(ArrayBuffer)が提供され、要素を動的に増やしたり、Arrayとの相互回転を実現したりすることができる.
	//       arrayBuffer
    var arr01 = new ArrayBuffer[String]()
    var arr02 = ArrayBuffer("h1","h2","h3")
	// arr02     **         ()
    arr02 += ("h4","h5","h6","h7")
	//         arr02       arr01 
    arr01++=arr02
	/**
      * insert     arr02 
      * ArrayBuffer(hello, h2, h3, h4, h5, h6, h7)
      * ArrayBuffer(hello, h2, h3, new_value, h4, h5, h6, h7)
      */
    println(arr02)
    arr02.insert(3,"new_value")
	//     -=                       remove()                
    arr01-="d" //  d  
	arr01.remove(4,6) //      4   6   
	//  array   arrayBuffer    
    val array = arr02.toArray //  array  
    val buffer = array.toBuffer //  arrayBuffer  
	//max min sum            
    val arr03 = ArrayBuffer(23, 32, 56, 64, 86, 12, 33, 34)  //int     
    println(arr03.min) //   
    println(arr03.sum) //  
	//    sortwith
    println(arr03.sortWith(_>_).mkString("-"))
    //       quickSort   quickSort        array  
    println(quickSort(arr03.toArray))

scalaのlist:
Scalaリストリストリストは配列に似ています.すべての要素のタイプは同じですが、リストは可変ではありません.値が定義されると変更できません.次に、リストは再帰的な構造(つまりリンクテーブル構造)を持ち、配列は
	//  :
	var list=List() //      List     
	var list2=List("zs","ls") //          List
	var list3=“aa”::(“bbb”::Nil)  // list3    aaa bbb       
    //  :          ::Nil
	//LIST    :
	list.head //  LIST     
	list.tail //    LIST,               
	list.isEmpty //LIST    
	//  LIST  
	list1:::list2      list.:::(list2)    List.concat(list1,list2)
	//  LIST         :list1. contains(“aaa”)
    //       list   true false
    println(l5.contains("hello"))
	//  LIST        : list1.filter(x=>x%2==0)
    //        
    println(l5.filter(d => d.eq("h1")))
    //         
    println(l5.filter(d => d.startsWith("m")))
	//   :+   +:  list     (          )
	var list1 = List(1, 2, 3, "abc")
	//:+               
	val list2 = list1 :+ 4 // (1,2,3,"abc", 4)
	println(list1) //list1     (1, 2, 3, "abc"),  list1      
	println(list2) //       [1, 2, 3, "abc", 4]

scalaの可変チェーンテーブル-ListBuffer:
Listbufferの値も長さも可変であり、ListBufferを使用するにはパッケージscalaをインポートする必要がある.collection.mutable.ListBuffer
	//listbuffer  
    var lb1=ListBuffer[String]("1","2","3")
    var lb2 = ListBuffer("a1","a2","a3")
    // listbuffer   
    lb2+="a4"
    lb2.append("a5","a6")
    //  list   list      list	
    println(lb1 ++= lb2)

scalaのMap:
は、キー/値ペアのセットのオブジェクトです.任意の値はキーに基づいて取得できます.キーはマッピングで一意ですが、値は必ずしも一意ではありません.マッピングはハッシュ・テーブルとも呼ばれます.マッピングには、可変と可変の2種類があります.可変オブジェクトと可変オブジェクトの違いは、オブジェクトが可変でない場合、オブジェクト自体が変更できないことです.
	  //map   
    var m1 = Map("  "->35,"  l"->33)
    var m2 = Map[Int,String](1->"  ",2->"  ")
    var m3 = Map[String,Long](("  ",55),("  ",66))
	  // map    
    m1+=("  "->2)
    m1+=(("  ",33),("  ",53))
      //map     
      //  map       , java    null,scala      ,      
	//println(m1("  "))
    println(m1.get("lll")) //None
    println(m1.getOrElse("mmm",888)) //  getOrElse            
	  //map   
    for((k,v) <- m2) println((k,v)) //   kv   
    for(k <- m2.keySet) println(k)  //  key 
    for(v <- m2.values) println(v) //  value 
scala  HashMap:import scala.collection.mutable.HashMap
	//  HashMap
    var hm1 = HashMap[String,Int](("  ",11),("  ",22), ("  ",33))
    //map   
    hm1("  ") = 88
    println(hm1("  "))
    //map  
    hm1.put("  ",35)

scalaのメタグループ-tuple
Scalaメタグループは、固定数のアイテムを組み合わせて、全体として渡すことができます.配列やリストとは異なり、メタグループは異なるタイプのオブジェクトを収容できますが、それらも可変ではありません.
	 //   tuple
    var t1 = (1,"hello","ma","kk",235,2,5,3,4,4,5,5,5,5,6,3,452) //         
     //     tuple   1 tuple   22   
    var t2 = new Tuple2("woshi2","mmmm")
    println(t1) //  t1
    println(t1._17) //         

scalaのOption:
は、指定されたタイプのゼロまたは要素からなるコンテナです.Option[T]は、欠落した値を表すSome[T]またはNoneオブジェクトであってもよい.
	  //   option
    var find:Option[String] = op1(1)
    println(find) //Some(zx)
    println(find.get) //zx
    println(find.getOrElse("    ")) //      none   ,  getOrElse       
      //  option
	def op1(id:Int):Option[String]={
	  if (id == 1){
        Some("zx")
      }else{
        None
      }
    }