首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Scala中的Map使用例子

Scala中的Map使用例子

作者头像
我是攻城师
发布于 2018-05-14 09:03:17
发布于 2018-05-14 09:03:17
3.6K00
代码可运行
举报
文章被收录于专栏:我是攻城师我是攻城师
运行总次数:0
代码可运行

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

(1)不可变Map

特点:

api不太丰富

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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修饰,引用不可变,支持读写

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我是攻城师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Scala的map实现key和value排序及各种排序比较等知识讨论
问题导读 1.map能否直接排序? 2.如何转换,才能排序? 3.排序结果可以存储在哪两个集合中? 4._*如何使用? 5.排序函数中,哪个可以进行升序和降序排列? 6.他们的排序性能如何?
用户1410343
2018/03/26
3.8K0
Scala的map实现key和value排序及各种排序比较等知识讨论
Scala 入门2(数组、List、Set、Map、元组、Option、Iterator)
学自 https://www.runoob.com/scala/scala-tutorial.html
Michael阿明
2021/09/06
5170
Scala入门篇 顶
scala> val a = println("ddd") ddd a: Unit = ()
算法之名
2019/08/21
5240
Scala入门篇
                                                                            顶
Scala综合练习_基于以下List集合实现词频统计
基于以下List集合实现词频统计 val list = List("hadoop spark hive ",""," hue spark hadoop hadoop","hue hive hive hive","spark hadoop hadoop") 实现词频统计,并按照单词个数降序排序,实现结果如下 hadoop-5 hive-4 spark-3 hue-2 val list = List("hadoop spark hive ",""," hue spark hadoop hadoop","
Maynor
2021/12/07
2300
Scala 学习笔记之Map与Tuple
上面构造了一个不可变的Map[String, Int],其值也不能被改变.如果想要一个可变映射,使用如下命令创建:
smartsi
2019/08/07
7280
2021年大数据常用语言Scala(十八):基础语法学习 Map对象
Map可以称之为映射。它是由键值对组成的集合。在scala中,Map也分为不可变Map和可变Map。
Lansonli
2021/10/11
5280
Scala随笔
Scala混入特质 package com.jmy import java.util import scala.io.StdIn object ObjectDemo01 { def main(args: Array[String]): Unit = { // 单例模式懒汉式 var demo: ScalaDemo = ScalaDemo.getIntance() var demo1: ScalaDemo = ScalaDemo.getIntance() println
姜同学
2022/10/27
2850
scala(十三) 集合
sorted sortBy(func: 集合元素类型 => B) sortBy里面的函数也是针对集合每个元素进行操作 sortBy后续是根据函数返回值进行排序
用户1483438
2022/04/18
5820
学好Spark必须要掌握的Scala技术点
Scala是以JVM为运行环境的面向对象的函数式编程语言,它可以直接访问Java类库并且与Java框架进行交互操作。
大数据学习与分享
2020/08/10
1.9K0
学好Spark必须要掌握的Scala技术点
带你快速掌握Scala操作———(3)
创建变长数组,需要提前导入ArrayBuffer类 import scala.collection.mutable.ArrayBuffer
刘浩的BigDataPath
2021/04/13
2.1K0
带你快速掌握Scala操作———(3)
scala(十五) List
不可变List 不可变List的创建: 通过apply方法创建: List[元素类型](初始元素,...) val list=List[Int](1,2,3,4,5,6,7,8,9,10) 通过 :: 方法创建: 初始元素 :: 初始元素 :: ... :: Nil/不可变List val list=1::2::3::4::5::6::7::8::9::10::Nil Nil相当于一个空的List,Nil与不可变List的关系类似Null与String的关系,使用Nil给不可变List赋予初始值的时候
用户1483438
2022/04/19
9120
scala(十六) Set
Set 特性 不重复、无序 不可变set 创建Set& apply方式创建 val set=Set[Int](1,2,3,4,5) 查看setApi 进入 scala $ scala Welcome to Scala 2.12.10 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_172). Type in expressions for evaluation. Or try :help. scala> val set=Set[Int](1,2,3,4
用户1483438
2022/04/20
3930
scala快速入门系列【函数式编程】
本篇作为scala快速入门系列的第十六篇博客,为大家带来的是关于函数式编程的相关内容。
大数据梦想家
2021/01/26
1.3K0
scala快速入门系列【函数式编程】
Scala学习一
1.集合操作练习 //创建一个List val lst0 = List(1,7,9,8,0,3,5,4,6,2) //将lst0中每个元素乘以10后生成一个新的集合 lst0.map(x => x*10 ) OR lst0.map(_*10 ) //将lst0中的偶数取出来生成一个新的集合 lst0.filter(x => x%2==0) lst0.filter(x => x%2==0).map(_*5) //将lst0排序后生成一个新的集合 lst0.sorted lst0.sortBy(x => x
sparkle123
2018/04/28
1.3K0
Scala:数据结构
5、设置一个映射,其中包含你想要的一些装备,以及它们的价格。然后根据这个映射构建另一个新映射,采用同一组键,但是价格上打9折。
Java架构师必看
2021/08/12
3880
Scala Turtuial-容器(集合)类型
集合 scala的集合分为可变集合和不可变集合,其中可变集合的增删改查都是作用于它本身;而不可变集合的增删改操作返回的是一个新的集合,原不可变集合保持不变。函数式编程常使用不可变集合,scala默认使用的也是不可变集合。他们对应的包分别为:scala.collection.immutable(不可变)和scala.collection.mutable(可变)。 常见的可变集合: ArrayBuffer,ListBuffer,LinkedList,DoubleLinkedList,MutableList,Qu
吕海峰
2018/04/03
1.4K0
scala List immutable.Map[String,Any]]的排序问题
帮同事处理List[scala.collection.immutable.Map[String,Any]]的排序问题
全栈程序员站长
2021/05/19
7980
Scala 【 5 数组常见操作和 Map 】
数组的常见操作 val a = Array(1,2,3,4,5) //数组求和 val sum = a.sum //获取数组的最大值 val max = a.max //对数组进行排序 scala.until.Sorting.quickSort(a) //获取数据的所有元素内容 a.mkString //用符号分隔开 a.mkString(",") //加上左右符号 a.mkString("<",",",">") //toString 函数 a.toString b.toString 使用 yield 和函
Lokinli
2023/03/09
3880
日志分析实战之清洗日志小实例6:获取uri点击量排序并得到最高的url
问题导读 1.读取日志的过程中,发生异常本文是如何解决的? 2.读取后,如何过滤异常的记录? 3.如何实现统计点击最高的记录? 日志分析实战之清洗日志小实例5:实现获取不能访问url http
用户1410343
2018/03/26
1K0
日志分析实战之清洗日志小实例6:获取uri点击量排序并得到最高的url
scala 容器详细解释
scala 中的所有集合类位于 scala.collection 或 scala.collection.mutable,scala.collection.immutable,scala.collection.generic 中
Tim在路上
2020/08/04
1.5K0
相关推荐
Scala的map实现key和value排序及各种排序比较等知识讨论
更多 >
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档