Scala映射和元組

來源:互聯網
上載者:User

標籤:style   blog   color   java   使用   io   for   ar   

映射
import scala.collection.mutableobject HelloWorld {  def main(args: Array[String]) {    val scores = Map("Alice" -> 10, "Bob" -> 33) //構造一個不可變的Map[String,Int]    val scores2 = scala.collection.mutable.Map("Alice" -> 10, "Bob" -> 33) //構造一個可變的映射    val scores3 = new mutable.HashMap[String, Int] //構造一個空的映射,選定一個映射實現並給出型別參數    val scores4 = Map(("Alice", 10), ("Bob", 33)) //另外一種定義映射的方式    val bobScore = scores4("Bob") //類似於Java中的scores4.get("Bob");    val bobScore2 = scores4.getOrElse("Bob", 0) //如果映射包含鍵"Bob",返回對應的值;否則,返回0    //映射.get(key)這樣的調用返回一個Option對象,要麼是some(鍵對應的值),要麼是None    //更新映射中的值    scores("Bob") = 90 //更新鍵"Bob"對應的值    scores("Fred") = 88 //增加新的鍵/值對偶到scores    scores +=("Bob" -> 20, "Fred" -> 30) //大量新增多個關係    scores -= "Alice" //移除Alice鍵對應的值    //如果對於不可變的映射,需要更改其值,那麼可以使用如下方式    var newScores = scores +("Bob" -> 1, "Fred" -> 7) //返回更新過的新映射    newScores = scores - "Alice" //返回去掉Alice之後的新映射  }}
迭代映射for((k,v)<-映射)處理k和v如果你需要訪問鍵或值,可以使用keySet和values方法,values返回一個Iterable要反轉一個映射-----即交換鍵和值的位置-----可以用:for((k,v)<-映射)yield(v,k)元組映射是鍵/值對偶的集合。對偶是元組(tuple)的最簡單形態---元組是不同類型的值的聚集。如果你有元組,val t = (1,3.14,"fred"),那麼可以使用val second = t._2來訪問第二個元素,也就是3.14,注意元組的各元組從1開始,而不是0。(這是scala噁心的地方之一,處處充滿了變數,不夠規整,不夠統一,無為的為開發人員增加了諸多記憶的負擔,很擔心scala並不會像Java那樣流行,或許以後會出現比scala更優秀的JVM函數式語言)元組可以用於函數需要返回不止一個值的情況,"New York".partition(_.isUpper)//輸出對偶,分別是滿足某個條件和不滿足某個條件的字元
object HelloWorld {   def main(args: Array[String]) {    val symbols = Array("<", "-", ">")    val counts = Array(2, 10, 2)    val pairs = symbols.zip(counts) //使用zip方法可以把多個值綁定在一起,以便它們能夠被一起處理    for ((s, n) <- pairs) {      Console.print(s * n) //輸出<<---------->>    }    println()    //使用toMap方法可以將對偶的集合轉換成映射    val keys = Array("1", "2", "3", "4", "5")    val values = Array("打", "倒", "親", "日", "派")    val map = keys.zip(values).toMap.toArray.sorted //將映射轉成Array之後排序,然後就可以將排序之後的結果輸出    for ((k, v) <- map) {      println("key:" + k + ",value:" + v)    }  }}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.