scala学习之map和tuple

来源:互联网 发布:mysql 修改列字符集 编辑:程序博客网 时间:2024/06/05 17:34

Map

  //不可变的Map  val scores = Map("Alice" -> 3, "lucy" -> 6, "Lily" -> 9)  //可变的  scala.collection.mutable.Map("Alice" -> 3, "lucy" -> 6, "Lily" -> 9)  var map = new mutable.HashMap[String, Int]  map += ("cindy" -> 5)  println(map)  //操作Map  println(scores("Alice"))  //如果映射中不包含 该键 会抛出异常  //检查map中是否含有某个键 可以使用contains 方法  val score = if (scores.contains("lucy")) scores("lucy") else 0  //或者  scores.getOrElse("lucy", 0)  map("cindy") = 10 //更新cindy的值  map("lilei") = 8 //增加新的映射  //也可以这样  map +=("Bob" -> 5, "Fred" -> 7)  map -= "lilei"  //移除键值对  /**   * 不能update不可以变的map,但是可以得到一个新的map   */  val newScores = scores +("Bob" -> 5, "Fred" -> 7)  //也可以如此  var scoreses = Map("Alice" -> 3, "lucy" -> 6, "Lily" -> 9)  scoreses = scoreses +("Bob" -> 5, "Fred" -> 7)  //从不可变Map中移除值  scoreses = scoreses - "lucy"  //迭代  for ((name, num) <- scoreses) println("name :" + name + " socre:" + num)  //返回key值set集合  println(scoreses.keySet)  //获取所有的value  for (v <- scoreses.values) println(v)  //反转map  var reverSocres = for ((name, num) <- scoreses) yield (num, name)  println(reverSocres)  //不可变的TreeMap  SortedMap("Alice" -> 3, "lucy" -> 6, "Lily" -> 9)
tuple:

  //元组  val t = (1,3.14,"scala")  println(t._1)  //访问元组 从1开始  val (first,second,third) = t //依次对first,second,third为1,3.14,"scala"  val (f,s,_) = t //如果不需要全部的值可以如此写  //zip 很像python中的zip函数  val symbols = Array("<","-",">")  val counts = Array(3,6,3)  val pairs = symbols.zip(counts)  for ((s,n) <- pairs) Console.print(s * n) //打印<<<------>>>





0 0