ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Scala学习3 Map

2019-11-22 11:02:46  阅读:224  来源: 互联网

标签:Map val Scala 30 Leo 学习 leo ageMap


 

import org.junit.Test

/**
 *可变和不可变Map的操作、遍历
 */
class C3_Map {

    @Test
    def immutableMapTest(): Unit = {
        // 使用另外一种方式定义Map元素
        val ageMap = Map(("Leo", 30), ("Jen", 25), ("Jack", 23))
        // 创建一个不可变的Map
        val immutableMap = Map("Leo" -> 30, "Jen" -> 25, "Jack" -> 23)

        // 获取指定key对应的value,如果key不存在,会报错
        val leoAge = ageMap("Leo")
        //        java.util.NoSuchElementException: key not found: leo
        //        val leoAge2 = ages3("leo")

        // 使用contains函数检查key是否存在
        val leoAge3 = if (ageMap.contains("leo")) ageMap("leo") else 0
        println(leoAge3)

        // getOrElse函数
        val leoAge4 = ageMap.getOrElse("leo", 0)
        println(leoAge4)

        // 更新不可变的map
        val ages2 = ageMap + ("Mike" -> 36, "Tom" -> 40)
        // 移除不可变map的元素
        val ages3 = ageMap - "Tom"
    }

    @Test
    def mutableMapTest(): Unit = {
        //        ages("Leo") = 31
        // 创建一个可变的Map
        val mutableMap = scala.collection.mutable.Map("Leo" -> 30, "Jen" -> 25, "Jack" -> 23)
        // 创建一个空的HashMap
        val ages4 = new scala.collection.mutable.HashMap[String, Int]
        mutableMap("Leo") = 31
        println(mutableMap)

        // 增加多个元素
        mutableMap += ("Mike" -> 35, "Tom" -> 40)
        // 移除元素
        mutableMap -= "Mike"

    }

    @Test
    def forTest(): Unit = {
        val ageMap = Map(("Leo", 30), ("Jen", 25), ("Jack", 23))

        // 遍历map的entrySet
        for ((key, value) <- ageMap) println(key + " " + value)
        println

        // 遍历map的key
        for (key <- ageMap.keySet) println(key)
        println

        // 遍历map的value
        for (value <- ageMap.values) println(value)
        println

        //for 循环中的 yield 会把当前的元素记下来,保存在集合中,循环结束后将返回该集合
        // 生成新map,反转key和value
        val map = for ((key, value) <- ageMap) yield (value, key)
        println(map)

    }

    @Test
    def otherMapTest(): Unit = {
        // SortedMap可以自动对Map的key的排序 类似于Java的TreeMap
        val sortedAges = scala.collection.immutable.SortedMap("c" -> 30, "b" -> 15, "a" -> 25)
        println(sortedAges)

        // LinkedHashMap可以记住插入entry的顺序
        val linkedHashMap = new scala.collection.mutable.LinkedHashMap[String, Int]
        linkedHashMap("leo") = 30
        linkedHashMap("alice") = 15
        linkedHashMap("jen") = 25
        println(linkedHashMap)

        // zip操作 把两个数组合并为 Array[(String, Int)]
        val names = Array("leo", "jack", "mike")
        val ages = Array(30, 24, 26)
        val nameAgeArr = names.zip(ages)
        for ((name, age) <- nameAgeArr) println(name + ": " + age)
    }

}

 

标签:Map,val,Scala,30,Leo,学习,leo,ageMap
来源: https://www.cnblogs.com/mycd/p/11910274.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有