Scala中的Map集合:key必须唯一

Map(映射)是一种可迭代的键值对(key/value)结构。
所有的值都可以通过键来获取。
Map 中的键都是唯一的。
Map 也叫哈希表(Hash tables)。
Map 有两种类型,可变与不可变,区别在于可变对象可以修改它,而不可变对象不可以。
默认情况下 Scala 使用不可变 Map。如果你需要使用可变集合,你需要显式的引入 import scala.collection.mutable.Map 类
在 Scala 中 你可以同时使用可变与不可变 Map,不可变的直接使用 Map,可变的使用 mutable.Map。

更多方法请详见API

package com.fuyun.bigdata.scala.collection

object MapDemo {

  def main(args: Array[String]): Unit = {
    // 定义Java中的Map实例对象
    import java.util
    val hashMap: util.HashMap[String, Int] = new util.HashMap[String, Int]()
    hashMap.put("spark", 1243)
    hashMap.put("hive", 233)
    hashMap.put("scala", 999)
    hashMap.put("python", 233333)
    hashMap.put("hadoop", 3222)
    hashMap.put("spark", 333) //将会覆盖上面key为spark的值,因为Map的key必须唯一

    // TODO: 将Java中的HashMap集合转换为Scala中的Map集合实例对象
    // ._表示包下的所有类
    import scala.collection.JavaConverters._
    val map: scala.collection.mutable.Map[String, Int] = hashMap.asScala // 隐式转换
    map.foreach(println(_))

    val map1 = Map("python" -> 2, "scala" -> 5, "spark" -> 6)
    val map2 = Map()
    // 获取Map中的key
    println("map1 keys is : " + map1.keys)
    // 获取Map中的values
    println(s"map1 values is : ${map1.values}")
    // 检查Map是否为空
    println(s"map1 is empty : ${map1.isEmpty}")
    println("map2 is empty : " + map2.isEmpty)

    // 可以使用 ++ 运算符或 Map.++() 方法来连接两个 Map,如果 Map 中存在相同的 key,
    // 合并后的 Map 中的 value 会被最右边的 Map 的值所代替
    val maps = map ++ map1
    println(s"map ++ map1 is : ${maps.mkString(", ")}")

    val maps1 = map.++(map1)
    println(s"map.++(map1) is : ${maps1}")

    // 查看Map中是否包含指定key
    println(s"hive is contains map key ? false or true : ${map.contains("hive")}")

    // 返回指定key的value
    println(s"hive -> ${map.get("hive")}")
  }

}

运行结果:
(hive,233)
(python,233333)
(spark,333)
(scala,999)
(hadoop,3222)
map1 keys is : Set(python, scala, spark)
map1 values is : MapLike(2, 5, 6)
map1 is empty : false
map2 is empty : true
map ++ map1 is : hive -> 233, python -> 2, spark -> 6, scala -> 5, hadoop -> 3222
map.++(map1) is : Map(hive -> 233, python -> 2, spark -> 6, scala -> 5, hadoop -> 3222)
hive is contains map key ? false or true : true
hive -> Some(233)

Process finished with exit code 0

你可能感兴趣的:(scala)