Scala 簡明速學(xué)04 集合-Map

Scala 簡明速學(xué)04 集合-Map

Map

Scala中Map提供鍵值對集合照弥。

Map的初始化

Scala中的Map分為可變Map與不可變Map邀泉。不可變Map初始化后不可更改其元素炫彩。


object MapInitTest {
    def main(args: Array[String]): Unit = {
        //默認(rèn)創(chuàng)建不可變map
        val lakers = Map("Lebron" -> 23, "Rondo" -> 9, "Ball" -> 2)
        println(lakers)
        println(lakers("Rondo")) //訪問map
        //不可變Map矩欠,初始化后不可修改倦踢,不可以添加元素炕倘,也不可以修改元素
        //lakers("Kuzma") = 0//添加操作
        //lakers("Rando") = -1//修改操作

        //創(chuàng)建可變的Map
        val lakers2 = scala.collection.mutable.Map("Lebron" -> 23, "Rondo" -> 9)
        lakers2("Kuzma") = 0
        println(lakers2)

        //使用元組語法初始化Map
        val lakers3 = Map(("Zubac", 40), ("Ingram", 14), ("McGee", 7))
        println(lakers3)

        //創(chuàng)建一個元素為空的Map
        var lakers4 = new mutable.HashMap[String, Int]()
        lakers4.put("Chandler", 5)
        lakers4.+=("Beasley" -> 11)
        println(lakers4)
    }
}

Map的基本操作

對于可變Map,進(jìn)行增刪改查操作。


object MapBasicOpt {
    def main(args: Array[String]): Unit = {
        val lakers = scala.collection.mutable.Map("Lebron" -> 23, "Rondo" -> 9)
        try {
            //獲取元素,如果獲取的元素不在集合中瘤运,會拋出異常
            val player = lakers("Tatum")
            println(player)
        } catch {
            case e: NoSuchElementException => e.printStackTrace()
        }

        //檢查元素是否存在
        println(lakers.contains("Lebron"))

        //給定默認(rèn)值獲取元素
        println(lakers.getOrElse("Tatum", -1))

        //添加元素
        lakers("Stephenson") = 6
        //添加多個元素
        lakers += ("Hart" -> 3, "Pope" -> 1)

        //更新元素
        lakers("Rondo") = -1

        //刪除元素
        lakers.remove("Tatum")

    }
}


對于不可變Map,增刪改查的操作不會改變原有Map,而是返回一個新的Map窍霞。

object MapBasicOpt2 {
    def main(args: Array[String]): Unit = {
        val lakers = Map("Lebron" -> 23)
        //增加元素,返回新集合
        val lakers2 = lakers + ("Rondo" -> 9, "Ball" -> 2)
        //刪除元素,返回新集合
        val lakers3 = lakers2 - "Ball" - "Rondo"
        //更新元素尽超,返回新集合
        val lakers4 = lakers3.updated("Lebron", 6)
    }
}

Map的遍歷

可以使用增強for循環(huán),foreach方法對Map進(jìn)行遍歷官撼。


object MapIterate {
    def main(args: Array[String]): Unit = {
        val lakers = Map("Lebron" -> 23, "Ball" -> 2, "Kuzma" -> 0)

        //增強for循環(huán),遍歷key,value
        for ((k, v) <- lakers) println(k, v)
        //增強for循環(huán),遍歷value
        for ((_, v) <- lakers) println(v)
        //增強for循環(huán),遍歷key
        for ((k, _) <- lakers) println(k)


        //只遍歷Map的key
        for (k <- lakers.keySet) println(k)

        //只遍歷Map的value
        for (v <- lakers.values) println(v)

        //使用foreach遍歷Map
        lakers.foreach(e => println(e._1, e._2))

        //生成新Map,并反轉(zhuǎn)Key與Value,使用增強for循環(huán)
        val lakers2 = for ((k, v) <- lakers) yield (v, k)

        //生成新Map,并反轉(zhuǎn)Key與Value,使用foreach
        val lakers3 = lakers.map(e => (e._2, e._1))


    }
}


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市似谁,隨后出現(xiàn)的幾起案子傲绣,更是在濱河造成了極大的恐慌掠哥,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秃诵,死亡現(xiàn)場離奇詭異续搀,居然都是意外死亡,警方通過查閱死者的電腦和手機菠净,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門禁舷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人毅往,你說我怎么就攤上這事牵咙。” “怎么了攀唯?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵洁桌,是天一觀的道長。 經(jīng)常有香客問我侯嘀,道長另凌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任戒幔,我火速辦了婚禮吠谢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘诗茎。我一直安慰自己工坊,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布错沃。 她就那樣靜靜地躺著栅组,像睡著了一般。 火紅的嫁衣襯著肌膚如雪枢析。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天刃麸,我揣著相機與錄音醒叁,去河邊找鬼。 笑死泊业,一個胖子當(dāng)著我的面吹牛把沼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吁伺,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼饮睬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了篮奄?” 一聲冷哼從身側(cè)響起捆愁,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤割去,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后昼丑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呻逆,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年菩帝,在試婚紗的時候發(fā)現(xiàn)自己被綠了咖城。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡呼奢,死狀恐怖宜雀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情握础,我是刑警寧澤州袒,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站弓候,受9級特大地震影響郎哭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜菇存,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一夸研、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧依鸥,春花似錦亥至、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至衣吠,卻和暖如春茶敏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背缚俏。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工惊搏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人忧换。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓恬惯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親亚茬。 傳聞我的和親對象是個殘疾皇子酪耳,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容