zoukankan      html  css  js  c++  java
  • 一起学scala--Map&Tuple

    Map(映射)是一种可迭代的键值对集合。在scala中使用映射非常简单。

    构造Map

    //inmutable Map(不可变映射,值不可变)
    // 具有初始值
    // 在scala中->操作符是用来创建键值对元组的。
    val inmutableMap = Map(("yoleen" -> 20), ("hq", 26))
    // 不具有初始值,不建议对不可变Map这样构建。不可变映射添加数据都返回一个新的映射。
    val stringToInt = new scala.collection.immutable.HashMap[String, Int]
    //mutable Map(可变映射,增加、删除、更新元素返回自身)
    val mutableMap: mutable.Map[String, Int] = scala.collection.mutable.Map(("yoleen" -> 20), ("hq", 26))
    //不具有初始值
    val stringToInt = new scala.collection.mutable.HashMap[String, Int]
    //有初始值的可以不用new
    

    获取映射中的值

    val mutableMap: mutable.Map[String, Int] = scala.collection.mutable.Map(("yoleen" -> 20), ("hq", 26))
    val v: Option[Int] = mutableMap.get("yoleen") //如果key存在返回的是some对象,对结果进行了封装。不存在返回的是None
    val v1: Int = mutableMap("yoleen")// 使用apply方法获取值,不进行option封装。
    val v2: Int = mutableMap.getOrElse("yoleen", 10)//如果key不存在就返回默认值
    val v3: Int = mutableMap.getOrElseUpdate("yoleen1",op(5,6))//如果key不存在返回默认值的同时还添加进映射中去。
    

    添加&更新映射中的值

    val mutableMap: mutable.Map[String, Int] = scala.collection.mutable.HashMap[String,Int]
        mutableMap+=("yoleen"->10)
        mutableMap+=("yoletpig"->10,"alex"->20) //添加多个键值对
        mutableMap++=mutable.Map(("tony" -> 20), ("jskon", 26)) //添加另一个映射中所有键值对。
        mutableMap.put("kudu",6)//键存在则更新值
        mutableMap("yoleen") = 20//更新值
        mutableMap.transform((s, i) => i * 2)//对每个键对应的值进行*2操作
    

    移除键值对

    mutableMap-="yoleen" 
    mutableMap-=("yoletpig","jskon") //移除多个键值对
    val option: Option[Int] = mutableMap.remove("kudu") //移除键值对返回option对象
    mutableMap.retain((s,i)=>s.startsWith("y") && i>=10) //只保留键已"y"开头并且值大于等于10的键值对
    mutableMap.clear()//清除所有键值对
    

    迭代映射

    for (elem <- mutableMap) {
     elem // tuple类型(String,Int)
    }
    for ((k,v) <- mutableMap) {
      //k,v 键跟值
    }
    for (elem <- mutableMap.keySet) {
      //elem 就是key  
    }
    for (elem <- mutableMap.values) {
      //elem 就是value
    }
    

    其他映射

    除了常用的HashMap之外,还有SortMap,LinkedHashMap,TreeMap等等。

    • SortMap 按照顺序依次访问映射中的键。
    • LinkedHashMap 按照插入顺序访问。
    • TreeMap 按键排序。
      如需与java互操作,加入隐式转换就行。
    import scala.collection.JavaConversions.mapAsScalaMap
    

    元组(Tuple)

    元组的值是通过将单个的值包含在()中构成。例如:

    (1,3.14,"hello") //类型不限
    val t = (1,3.14,"hello")
    //我们可以通过._1 ._2来访问元组中的元素
    val a = t._1 // 1
    val b = t._2 // 3.14
    //注意,元组下标是从1开始。
    //我们可以使用模式匹配获取元组中的值。
    val (first,_,third) = t
    // first=1,third="hello"
    

    元组的拉链操作

    val sy = Array("<","-",">")
    val cnt = Array(2,3,2)
    val pairs = sy.zip(cnt) //Array(("<",2),("-",3),(">",2))
    for((s,n)<-pairs) print(s*n) // <<--->>
    

    码字不易,喜欢的麻烦点下推荐。

  • 相关阅读:
    数据结构和算法(Golang实现)(14)常见数据结构-栈和队列
    数据结构和算法(Golang实现)(20)排序算法-选择排序
    数据结构和算法(Golang实现)(18)排序算法-前言
    数据结构和算法(Golang实现)(22)排序算法-希尔排序
    数据结构和算法(Golang实现)(21)排序算法-插入排序
    数据结构和算法(Golang实现)(27)查找算法-二叉查找树
    关于SpringMVC映射模型视图的几点小事
    关于spring中事务管理的几件小事
    关于spring中AOP的几件小事
    关于spring中bean配置的几件小事
  • 原文地址:https://www.cnblogs.com/yoletPig/p/12969202.html
Copyright © 2011-2022 走看看