经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Scala » 查看文章
Scala的映射和元组操作
来源:cnblogs  作者:codegeekgao  时间:2018/9/25 20:22:21  对本文有异议

映射和元组操作

  • 构造Map
  1. // 构造一个不可变的MAP映射,类似与key -> value这样的组合叫做对偶
  2. val score = Map("Jack" -> 12, "Bob" -> 20)
  3. // 也可以这种创建一个Map映射
  4. val score1 = Map(("Jack", 12), ("Bob", 20))
  5. // 根据key获取value,类似java中的map.get(key)若是获取一个不存在的key则会报错而不是null
  6. println(score("Jack"))
  7. // 获取元素不存在给出无元素提醒
  8. val flag = if (score.contains("haha")) score.get("haha") else "no such element"
  9. val flag1 = score.getOrElse("haha", "no such element")
  10. // 创建可变Map
  11. val score = scala.collection.mutable.Map("Jack" -> 12, "Bob" -> 20)
  • 更新映射中的值
  1. 在可变的映射中,可以更新某个映射的值,在=号左侧使用():
  2. // 更新可变的Map的值
  3. scores("Bob") = 10
  4. // 添加新的key-value
  5. scores("haha")=7
  6. // 也可以使用+=操作和创建映射关系
  7. scores +=("Michael" -> 22)
  8. // 移除某个键对应的值
  9. score -=("Michael")
  • 迭代映射
  1. for((k,v) <- 映射) 这种可以得到每一个的键值对
  2. // 和java一样可以使用keySet和values方法,values方法将会返回一个iterable
  3. score.keySet // 返回类似("Bob","Michael")
  4. // 获取map的value
  5. for (v <- score.values) println(v)
  • 排序映射

    操作映射时,需要选定一个实现---哈希表或者平衡树,默认情况Scala中式hash表,若想顺序访问所有的键,因此需要一个树形映射

  1. val scores = scala.collection.immutable.SortedMap("Bob" -> 10,"michael" -> 12)
  • 与java的互操作
  1. // import scala.collection.javaConversions.mapAsScalaMap 然后指定Scala映射类型触发转换
  2. val scores:scala.collection.mutable.Map[String,Int] = new java.util.TreeMap[String,Int]
  3. // import scala.collection.javaConversions.propertiesAsScalaMap
  4. val props :scala.collection.Map[String,String] = System.getProperties()
  5. // 以上都是将java的map转为Scala的map,可以将Scala的map转为java的mao
  6. import scala.collection.javaConversions.mapAsJavaMap
  • 元组

映射式键值对的集合,对偶式元组(tuple)的最简单的形态---而元组式不同类型值得聚集

  1. (1,95.27,"Bob") 是一个元组类型为(Int,Double,java.lang.String)可以方法_1,_2,_3访问元组例如以下元组:
  2. val l = (1,2.34,"哈哈")
  3. println(l._2)
  • 拉链操作
  1. // 使用元组可以将他们映射起来使用zip方法
  2. val symbols = Array("<","-",">")
  3. val counts = Array(2,10,2)
  4. val pairs = symbols.zip(counts)
  5. println(pairs.toBuffer)
  6. // 打印<<---------->>
  7. for ((s,n) <- pairs) Console.print(s * n)
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号