zoukankan      html  css  js  c++  java
  • 快学Scala(4)--映射和元组

    构造映射:

    val scores = Map("Alice" -> 10, "Bob" -> 3, "Cindy" -> 8)  //不可变映射
    val scores2 = scala.collection.mutable.Map("Alice" -> 10, "Bob" -> 3, "Cindy" -> 8)  //可变映射
    val socres3 = new mutable.HashMap[String, Int]  //空映射

    获取映射中的值:

    val bobScore = scores("Bob")    //类似于Java中的scores.get("Bob"),如果映射不包含请求中使用的键,则会抛出异常
    

    检查是否有某个指定的键:

    val bobScore1 = if(scores.contains("Bob")) scores("Bob") else 0
    val bobScore2 = scores.getOrElse("Bob", 0)    //若映射中包含"Bob",则返回对应的值,否则返回0
    

      

    更新映射中的值:

    scores2("Bob") = 10
    scores2("Fred") = 7
    scores2 += ("Bob" -> 10, "Fred" -> 7)
    scores2 -= "Alice"
    val newScores = scores + ("Bob" -> 10, "Fred" -> 7)   //更新过的映射
    

      注:只能更新一个可变映射中的键值对;但是对于不可变映射可以使用最后一种方法

    迭代映射:

    println(scores.keySet)
    for(v <- scores.values) println(v)
    println("")
    for(k <- scores.keys) println(scores(k))
    println("")
    for(k <- scores.keySet) println(scores(k))
    

      输出结果:

    与Java的交互操作:

    import scala.collection.JavaConverters._
    
    ...
    
    val scores4 : java.util.Map[String, Int] = scores2.asJava
    val scores5 : mutable.Map[String, Int] = scores4.asScala

      关于JavaConverters api详情见 http://www.scala-lang.org/api/current/scala/collection/JavaConverters$.html

    元组(Tuple)

    val t = (1, 3.14, "Fred")
    println(t._1)
    var (first, second, third) = t
    (first, second, _) = t
    

      

    拉练操作:

    val symbols = Array("<", "-", ">")
    val counts = Array(2, 10, 2)
    val pairs = symbols.zip(counts)
    for((s,n) <- pairs) print(s * n)
    

      注:代码中的"*"为复写方法,表示将字符串s重复n次

    keys.zip(values).toMap
    

      存在一个键的集合,以及一个与之平行对应的值的集合,那么就可以使用拉练操作将他们组合成一个对偶的集合,再用toMap方法将其转换成映射

  • 相关阅读:
    Java程序员必会的工具库,代码量减少90%
    Git常用操作
    Eclipse开发环境配置
    Spring Cloud Alibaba Nacos 在Windows10下启动
    MySQL连接异常Communications link failure
    Spring Cloud Alibaba Nacos2.0踩坑
    Spring Cloud Alibaba Nacos配置中心与服务发现
    RocketMQ学习笔记
    Linux开发环境配置
    Clumper尝鲜
  • 原文地址:https://www.cnblogs.com/PaulingZhou/p/6622152.html
Copyright © 2011-2022 走看看