zoukankan      html  css  js  c++  java
  • Scala入门系列(四):Map & Tuple

    Map

    1. 创建Map
    // 创建一个不可变的Map
    scala> val ages = Map("Leo" -> 30, "Sparks" -> 25)
    ages: scala.collection.immutable.Map[String,Int] = Map(Leo -> 30, Sparks -> 25)
    // 创建一个可变的Map
    scala> val ages = scala.collection.mutable.Map("Leo" -> 20, "JEN" -> 23)
    ages: scala.collection.mutable.Map[String,Int] = Map(JEN -> 23, Leo -> 20)
    scala> ages("Leo") = 31
    // 使用另外一种方式定义Map元素
    scala> val ages = Map(("leo", 30), ("sparks", 20))
    ages: scala.collection.immutable.Map[String,Int] = Map(leo -> 30, sparks -> 20)
    // 创建一个空的HashMap,必须是实现类而不是抽象接口
    scala> val ages = new scala.collection.mutable.HashMap[String, Int]
    ages: scala.collection.mutable.HashMap[String,Int] = Map()

    1. 访问Map元素
    // 使用contains函数检查key是否存在
    scala> val leoAge = if (ages.contains("Leo")) ages("Leo") else 0
    leoAge: Int = 0
    // getOrElse函数
    scala> val leoAge = ages.getOrElse("Leo", 0)
    leoAge: Int = 0

    1. 修改Map元素
    // 添加或者更新元素
    scala> ages("Leo") = 31
    // 添加多个元素
    scala> ages += ("Mike" -> 34, "Tom" -> 40)
    // 移除元素
    scala> ages -= "Mike"
    // 变相更新不可变map
    scala> val ages2 = ages + ("Mike" -> 34, "Tom" -> 40)

    1. 遍历Map
    // 遍历map的entrySet
    scala> for((key, value) <- ages) println(key + " " + value)
    // 遍历key
    scala> for(key <- ages.keySet) println(key)
    // 遍历value
    scala> for(value <- ages.values) println(value)
    // 生成新map,反转key和value
    scala> for((key, value) <- ages) yield (value, key)

    1. SortedMap & LinkedHashMap
    // SortedMap可以自动对Map的key排序,按照字母顺序
    scala> val ages = scala.collection.immutable.SortedMap("leo" -> 30, "alice" -> 15)
    ages: scala.collection.immutable.SortedMap[String,Int] = Map(alice -> 15, leo -> 30)
    // LinkedHashMap可以记住插入entry的顺序
    scala> val ages = new scala.collection.mutable.LinkedHashMap[String,Int]
    ages: scala.collection.mutable.LinkedHashMap[String,Int] = Map()
    scala> ages("leo") = 30
    scala> ages("Sparks") = 20
    scala> ages
    res70: scala.collection.mutable.LinkedHashMap[String,Int] = Map(leo -> 30, Sparks -> 20)

    元组Tuple

    Scala元组将固定数量的项目组合在一起,以便它们可以作为一个整体传递。 与数组或列表不同,元组可以容纳不同类型的对象,但它们也是不可变的。(可以用作自定义数据类型)

    // 创建Tuple
    scala> val t = ("leo", 30, "hello")
    t: (String, Int, String) = (leo,30,hello)
    // 访问Tuple
    scala> t._1

    // zip操作
    scala> val names = Array("leo", "jack", "mike")
    names: Array[String] = Array(leo, jack, mike)
    scala> val ages = Array(30, 24, 25)
    ages: Array[Int] = Array(30, 24, 25)
    scala> val nameAges = names.zip(ages)
    nameAges: Array[(String, Int)] = Array((leo,30), (jack,24), (mike,25))
    scala> for ((name, age) <- nameAges) println(name + ":" + age)
    leo:30
    jack:24
    mike:25
  • 相关阅读:
    Nginx PHP页面找不到总是返回404
    Bing每日一图
    Vue3
    PHP PDO相关
    IIS 搭建FTP
    vue根据环境不同设置不同的入口文件
    Vue生成打包报告
    Vue项目在执行build命令期间中移除所有consol.log
    Nprogress 的使用
    Vue报错处理
  • 原文地址:https://www.cnblogs.com/LiCheng-/p/8022219.html
Copyright © 2011-2022 走看看