资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

好程序员大数据学习路线分享Scala系列之映射Map-创新互联

好程序员大数据学习路线分享Scala系列之映射Map首先我们先来看一下什么是映射(map)

在Scala中,把哈希表这种数据结构叫做映射。

成都创新互联公司是专业的舒城网站建设公司,舒城接单;提供网站制作、成都做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行舒城网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
1. 构建映射

在Scala中,有两种Map,一个是immutable包下的Map,该Map中的内容不可变;另一个是mutable包下的Map,该Map中的内容可变。

构建一个不可变的map

好程序员大数据学习路线分享Scala系列之映射Map

使用元组方式构建

好程序员大数据学习路线分享Scala系列之映射Map

构建一个可变的map

好程序员大数据学习路线分享Scala系列之映射Map

2. 获取和修改映射中的值

根据键获取map中对应的值,可以有以下三种方法,尤其推荐使用getOrElse方法。

好程序员大数据学习路线分享Scala系列之映射Map

修改可变map信息,遍历访问map

object MappingDemo {
  def main(args: Array[String]): Unit = {
    //定义构建一个可变的map
    val scores = scala.collection.mutable.Map ("zhangsan" -> 90, "lisi" -> 80, "wangwu" -> 0)
    //val scores2 = scala.collection.mutable.Map ("moumou"->50)   
    //修改map中对应键的值
    scores("wangwu") = 100

    //添加新的键值到map中
    scores("zhaoliu") = 50 //类似 scores.update("zhangsan",50)
    scores += ("sunqi" -> 60, "qianba" -> 99)
    //scores ++ =scores2

    //移除某个键值对
    scores -= "zhangsan" //类似 scores.remove("zhangsan")
    //scores -- =scores2 不好用???

    //获取键的集合并遍历
    //意义不大?如何通过建取到值
    val res = scores.keySet
    for(elem <- res)
      print(elem + "  ")
    println()

    //遍历map
    for ((k,v) <- scores)
      print(k+":"+v+"  ")
  }

执行结果

好程序员大数据学习路线分享Scala系列之映射Map

3. HashMap

可变map

import scala.collection.mutable

object MutMapDemo extends App{
  val map1 = new mutable.HashMap[String, Int]()
  //向map中添加数据
  map1("spark") = 1
  map1 += (("hadoop", 2))
  map1.put("storm", 3)
  println(map1)

  //从map中移除元素
  map1 -= "spark"
  map1.remove("hadoop")
  println(map1)
}

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:好程序员大数据学习路线分享Scala系列之映射Map-创新互联
转载来于:http://cdkjz.cn/article/cdhgdh.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220