`
qindongliang1922
  • 浏览: 2183762 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117530
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125921
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59896
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71301
社区版块
存档分类
最新评论

Scala中的Map使用例子

阅读更多



Map结构是一种非常常见的结构,在各种程序语言都有对应的api,由于Spark的底层语言是Scala,所以有必要来了解下Scala中的Map使用方法。



#### (1)不可变Map

特点:

api不太丰富

如果是var修饰,引用可变,支持读写

如果是val修饰,引用不可变,只能写入一次值,其后只读

    var a:Map[String,Int]=Map("k1"->1,"k2"->2)//初始化构造函数
    a += ("k3"->3)//添加元素
    a += ("k4"->4)//添加元素
    a += ("k1"->100)//已经存在添加元素会覆盖
    a -= ("k2","k1")//删除元素
//    a("k1") = "foo"//不支持
    println(a.contains("k6"))//是否包含某元素
    println(a.size)//打印大小
    println(a.get("k1").getOrElse("default")) //根据key读取元素,不存在就替换成默认值
    a.foreach{case (e,i) => println(e,i)} //遍历打印1
    for( (k,v)<-a ) println(k,v) //遍历打印2
    println(a.isEmpty)//判断是否为空
    a.keys.foreach(println)//只打印key
    a.values.foreach(println)//只打印value
    a=Map()//数据清空使用再次new
    println(a.size)
    a.toSeq.sortBy(_._1)//升序排序 key
    a.toSeq.sortBy(_._2)//升序排序 value
    a.toSeq.sortWith(_._1>_._1) //降序排序 key
    a.toSeq.sortWith(_._2>_._2) //降序排序 value
    
    //下面自定义按英文字母或数字排序
    implicit  val KeyOrdering=new Ordering[String] {
      override def compare(x: String, y: String): Int = {
        x.compareTo(y)
      }
    }
    println(a.toSeq.sorted)


#### (2)可变Map例子

特点:

api丰富与Java中Map基本类似

如果是var修饰,引用可变,支持读写

如果是val修饰,引用不可变,支持读写
  def map3(): Unit ={
    //不可变Map+var关键词修饰例子
    var a:scala.collection.mutable.Map[String,Int]=scala.collection.mutable.Map("k1"->1,"k2"->2)//初始化构造函数
    a += ("k3"->3)//添加元素
    a += ("k4"->4)//添加元素
    a += ("k1"->100)//已经存在添加元素会覆盖
    a += ("k1"->100,"k9"->9)//添加多个元素
    a -= ("k2","k1")//删除元素
    a ++= List("CA" -> 23, "CO" -> 25)//追加集合
    a --= List("AL", "AZ")//删除集合

    a.retain((k,v)=> k=="k1")//只保留等于k1元素,其他的删除
    a.put("put1",200)//put
    a.remove("k2")//remove
    a.clear()//清空
    a("k3")=100//支持

    println(a.contains("k6"))//是否包含某元素
    println(a.size)//打印大小
    println(a.get("k1").getOrElse("default")) //根据key读取元素,不存在就替换成默认值
    a.foreach{case (e,i) => println(e,i)} //遍历打印1
    for( (k,v)<-a ) println(k,v) //遍历打印2
    println(a.isEmpty)//判断是否为空
    a.keys.foreach(println)//只打印key
    a.values.foreach(println)//只打印value
    a=scala.collection.mutable.Map()//引用能变
    println(a.size)
    a.toSeq.sortBy(_._1)//排序 key
    a.toSeq.sortBy(_._2)//排序 value
    a.toSeq.sortWith(_._1>_._1) //降序排序 key
    a.toSeq.sortWith(_._2>_._2) //降序排序 value
    
        //下面自定义按英文字母或数字排序
    implicit  val KeyOrdering=new Ordering[String] {
      override def compare(x: String, y: String): Int = {
        x.compareTo(y)
      }
    }
    println(a.toSeq.sorted)
  }

 
  有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。 技术债不能欠,健康债更不能欠, 求道之路,与君同行。
 
 
 
0
0
分享到:
评论

相关推荐

    Scala的Map相关方法整合

    本文将详细介绍Scala中Map的各种方法及其用途,帮助开发者更好地理解和使用这些功能。 #### 1. `def++(xs:Map[(A,B)]):Map[A,B]` 该方法用于合并两个Map。如果两个Map中有相同的键,则当前Map中的值会覆盖参数Map中...

    浅析scala中map与flatMap的区别

    下面是一个使用 map 和 flatMap 的示例代码: ```scala object collection_t1 { def flatMap1(): Unit = { val li = List(1,2,3) val res = li.flatMap(x =&gt; x match { case 3 =&gt; List('a','b') case _ =&gt; ...

    Scala 集合数据操作示例

    在Scala中,集合操作通常通过方法调用来实现,但也可以使用一些特殊的符号作为操作符。下面列举了一些常用的集合操作符: 1. **`++++`**: 此操作符用于将两个`GenTraversableOnce`类型的集合连接在一起,形成一个新...

    Scala程序设计 例子 源代码

    在"Scala程序设计 例子 源代码"这个标题中,我们可以推测出这份资料可能来自一本关于Scala编程的书籍,可能包含了大量的示例代码,用于解释和演示Scala的各种概念和技术。这些例子可能是按章节或主题组织的,帮助...

    快学scala第二版本示例代码

    5. **集合库**(可能在`ch09`):Scala的集合库是其强大之处,包含各种高效、功能丰富的集合类型,如List、Set、Map,以及操作这些集合的方法。 6. **隐式转换**(如`ch20`和`ch21`):这是Scala中的一个高级特性,...

    scala例子 实例

    在“scala例子”中,我们将深入探讨Scala的基础语法、特性以及如何通过实例来学习和理解这个语言。 Scala的核心特性包括: 1. 面向对象编程:Scala是完全支持面向对象的,它允许我们定义类、对象和接口。类可以...

    atomic-scala-examples

    在《Atomic Scala》中,作者通过一系列的小型、原子性的例子,逐步引导读者探索Scala的世界。这些例子涵盖了从基本语法到高级特性的广泛主题,包括但不限于: 1. **基础语法**:如变量声明、数据类型(包括基本类型...

    Scala编程例子

    通过"Scala编程例子"的学习,初学者可以逐步了解并掌握这些概念,从而在实践中运用Scala的强大功能。压缩包中的"examples"可能包含各种示例代码,涵盖以上提到的知识点,帮助学习者加深理解和应用。

    scala学习源代码

    另外,Scala有丰富的集合API,这些集合支持丰富的函数式操作,如map、filter和reduce,它们使数据处理变得简单且易于理解。 Scala的类型系统非常强大。它采用了静态类型,每个值都有其特定的类型,这在编译时就能...

    scala写的第一个wordcount例子

    在WordCount示例中,通过并行化map和reduce操作,可以显著提高大规模数据的处理速度。 6. 文件I/O操作: 要读取和写入文件,我们需要使用Scala的`Source`类或者Java的`FileInputStream`、`BufferedReader`等。在这...

    hadoop scala spark 例子项目,运行了单机wordcount

    在WordCount示例中,Spark读取HDFS上的数据,通过SparkContext创建RDD(弹性分布式数据集),然后在RDD上执行map操作,将每个单词分离出来,再通过reduceByKey操作聚合每个单词的计数。 4. **Maven**: Maven帮助...

    scala 教程

    本书不仅介绍了Scala的基本语法,还深入探讨了面向对象编程、函数式编程等高级主题,并通过具体的示例帮助读者理解Scala的强大功能。无论是对于希望快速上手Scala的新手,还是想要更深入探索Scala特性的高级用户,这...

    programming in Scala_ch

    - **互操作性**: 学习如何在Scala项目中使用Java类库和工具。 #### Actor和并发 - **并发模型**: 探索Scala中的Actor模型及其在并发编程中的作用。 #### 组合子解析 - **解析技术**: 学习如何使用组合子解析器来...

    Scala 程序设计 中+英文

    Scala是一种多范式编程语言,它融合了面向对象和函数式编程的概念,旨在提供一种高效、灵活且可扩展的编程环境。...通过仔细研读并实践书中的例子,你将能够熟练掌握Scala,并能将其应用于各种复杂项目中。

    scala 案例

    这个"Scala案例"可能包含了各种使用Scala编程的实际示例,旨在帮助学习者深入理解其语法、特性和实际应用。以下是关于Scala的一些核心知识点: 1. **基本语法**:Scala的语法简洁而富有表达力。例如,类定义、对象...

    scala学习-project.zip

    在这个"scala学习-project.zip"中,"scalaxuexi"可能包含了练习题、代码示例、教程或者一个小型项目,旨在帮助学习者通过实际操作掌握以上所述的Scala编程知识。通过解压并逐步研究这些文件,学习者可以加深对Scala...

    Scala的List类方法整合

    在Scala编程语言中,`List` 类是处理有序集合的一种常见方式。本文将详细介绍 `List` 类中的多种方法及其用途,帮助开发者更好地理解和使用这些功能。 #### 1. `def + (elem: A): List[A]` 此方法用于向列表的末尾...

    scala学习帮助文件

    在这个学习文件中,你将找到关于Scala语言的详细解释,包括语法、概念、最佳实践和示例代码。无论是初学者还是经验丰富的开发者,这个资料都能提供深入的理解和实用的指导。对于希望掌握Scala的人来说,这个资源无疑...

    A Brief Introduction to Scala

    3. **互操作性**:Scala与Java有着良好的互操作性,可以在Scala代码中调用Java类库,反之亦然,这大大扩展了Scala的应用范围。 4. **信任程序员**:Scala赋予开发者强大的控制权,允许他们编写高效的代码,同时也...

Global site tag (gtag.js) - Google Analytics