Scala經常使用集合概述

Scala的集合分爲可變集合與不可變集合,可變集合表示這個集合中的元素可被添加,更新,刪除。不可變集合表示對此集合操做之後會產生一個新的集合,而原來這個集合不改變。java

全部的集合都在scala.collection包下面而且分爲兩類
在scala.collection.mutable都是可變集合,在scala.collection.immutable裏都是不可變集合。app

這是scala.collection.immutable包下的集合的繼承關係ui

clipboard.png

這是加入了scala.collection.mutable後全部集合的繼承關係spa

clipboard.png

下面我介紹幾個經常使用的集合及操做scala

Traversable代表全部子類均可以被遍歷
lterable表示這些集合均可進行迭代操做
Set:無序元素
Seq:有序元素
Map:映射code

  • List:裏面全部類型同樣,且不可變,下面是List的常見操做
//兩種初始化List的方式,::能夠用來鏈接各元素
    val fruit=1::2::3::Nil
    val animal=List("tiger","dog","pig")
    //兩個List能夠相連
    val fa=fruit++animal
    //依次爲訪問List頭,尾元素,List是否爲空,查找List中指定元素的位置,根據索引(以0開始)訪問List
    fa.head
    fa.tail
    fa.isEmpty
    fa.indexOf(0)
    fa.apply(4)
    //根據特定條件過濾掉部分元素,注意fa並無改變,此時產生一個新的List
    val fa1=fa.filter(x=>x!=1)
    //將List每一個元素映射成另外一個元素
    val fa2=fa.map(x=>x+"1")
    //flatMap將嵌套List變成一層List
    val fa3=List(1,2,3)
    //List(List(0, 1, 2), List(1, 2, 3), List(2, 3, 4))
    val fa4=fa3.map(x=>g(x))
    //List(0, 1, 2, 1, 2, 3, 2, 3, 4)
    val fa5=fa3.flatMap(x=>g(x))
    //向左規約,即從最左邊其將第一第二個元素實行操做,並將操做結果
    //當成下次操做的參數之一與三個元素實現操做,直到最右邊,結果是18
    fa5.reduceLeft((x,y)=>x+y)
    //4表示初始值,y表示List中的下一個元素,x表示上次的結果,結果是10
    val fa6=fa3.foldLeft(4)((x,y)=>x+y)
    ...
    ...
    def g(v:Int)=List(v-1,v,v+1)
  • Tuple:並非集合,是一個系列不一樣對象的集合,一共可有22個Tuple,我的以爲相似於java中的枚舉類型。
//初始化語法
    val things=("1",2,200.0)
    //取得tuple的第一個元素
    things._1
    //證實它是一個類,結果是class scala.Tuple3
    things.getClass
    //使用模式匹配爲things元素命名,string對應的值就是"1"
    val (string,number,float)=things
    //遍歷輸出tuple中的每個元素
    things.productIterator.foreach(println)
  • Map:一組映射關係的管理
//初始語法
    val map=Map(1->"J",2->"Z",3->"B")
    //指定key訪問元素
    println(map(1))
    //判斷Key是否在元素裏面
    println(map.contains(4))
    //Map中添加元素
    map+(4->"Z")
    //Map中刪除元素
    map-3
    //添加多個元素
    val map2=map++List(5->"W",6->"C")
    //刪除多個元素
    val map1=map--List(1,2,3)
  • Seq:與List相似,不一樣點在於他內部的對象是有順序的,在此很少作說明了。
相關文章
相關標籤/搜索