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),在后台留言咨询。 技术债不能欠,健康债更不能欠, 求道之路,与君同行。
分享到:
相关推荐
主要介绍了浅析scala中map与flatMap的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
map[B](f: (A) ? B): List[B] 定义一个变换,把该变换应用到列表的每个元素中,原列表不变,返回一个新的列表数据
示例代码: import redis.RedisClient import scala.concurrent.Await import scala.concurrent.duration._ import scala.concurrent.ExecutionContext.Implicits.global object Main extends App { implicit ...
在上面的例子中,两行代码的返回结果其实是一样的,都是 List(2,3,4),而在第一行中的 _叫做占位符,可以让我们的代码更加简洁 但是这并不意味着使用 _ 和箭头函数是同样的结果 val list1:List[Int] = List(1,2,3)....
使用类似于 STM 的乐观写入模型写入“未来”是事务性的(参见下面的示例 2) 更改存储为提交事件流 使用 git 风格的 checkout 来 rebase 和复制一部分数据并进行本地更改 使用 git-style merge 重放提交到另一个...
Relate是Scala的轻量级,快速的数据库访问层,它抽象了JDBC的特性,同时保持了对SQL的完全控制。 安装 libraryDependencies + = " com.lucidchart " %% " relate " % " <version> " 例子 val ids = Seq ( 1 , 2 , 3...
共同点Scala的通用工具例子 package exampleimport commons . mapper . Mappersobject EasyExample {def main ( args : Array [ String ]) : Unit = {var map : collection. Map [ String , Any ] = Map ( " id " - ...
将以下行添加到您的.babelrc文件中: { " plugins " : [ " transform-scala-lambda " ] } 例子 对数字列表求和 使用lambda样式 const sum = [ 1 , 1 , 1 ] . reduce ( _ + _ ) ; 没有它 const sum = [ 1 , 1 , 1 ]...
Scala示例中的Kafka流例子包括字数哦,是的,你知道的。 但是,它在Scala中。 更多信息在这里Kafka Streams自动化测试简介天哪,您对我的字数做了什么!? 更多信息在这里Kafka Streams加入在那儿有一分钟,我认为这...
第一步,您需要将解析器和依赖项添加到您的构建文件中: libraryDependencies + = " com.lambdista " %% " money " % " 0.8.0 " 您可以找到所有发行的版本。 可用于Scala 2.13.x,2.12.x的版本。 使用范例 这是一...
Scala-Mapifier 该项目有助于处理案例类与Map[String, String]对象之间的两种转换。 该项目的起源是找到一种将Scala案例类映射到Postgres中的HSTORE列的优雅方法。 有关如何使用它的示例,请参见测试文件。执照有关...
要在 Ubuntu\Mac 下从命令行运行它,请使用:./parse.sh 文件名(例如:./parse sample.log 为了能够在命令行中操作 src 文件,您应该安装 maven 和 scala: 构建: mvn 编译 执行:mvn exec:java rut 测试:mvn...
Spark_DBSCAN Spark_DBSCAN 是为 Apache Spark 实现的集群算法的 Scala 开源库安装下载位于的 jar 文件并将其复制到您的库中例子 import org.aizook.scala.clustering.Spark_DBSCAN.Dbscanval eps = 3.0val minPts =...
Kotlin 语言文档 pdf 目录 概述 4 使用 Kotlin 进行服务器端开发 4 使用 Kotlin 进行 Android 开发 5 Kotlin JavaScript 概述 6 Kotlin 1.1 的新特性 7 开始 15 ...与 Scala 比较【官方已删除】 187
简约示例: HEAD ( " api " / " health " ).map { () => OK } 如果您觉得map更自然,则可以将其替换为apply 。 上面的例子可以写成: HEAD ( " api " / " health " ) { () => OK } 从路径中提取数据: GET ( ...
lighty:ES5 的匿名函数组合器基于 ES5 并受 Scala 的启发,lighty 旨在... 在 Scala 中是如何做的: val urls = value.split( " \n " ).map(_.trim).filter(_.length > 0 ); 使用 lighty,您可以编写 Scala 风格的 JS
在线LDA_Spark 基于Spark的在线LDA 该存储库包含来自在线 LDA 实现。 使用 Apache Spark v1.2.0 开发。... 有关更多详细信息,请参阅 Driver.scala 中的示例。 性能统计,在 4 节点集群上,每个集群有 16
RDD可以包含Python、Java、Scala中任意类型的对象,甚至可以包含用户自定义对象,本文主要通过Java实现相关示例。 Spark程序或shell会话工作流程 1. 从外部数据创建出输入RDD; 2. 使用诸如filter()等这样的转化...
已参考java.util.stream中的Streams和Scala中的Seq选择了这些接口。 但是,序列是不可变且无状态的。 例子 // import net.argius.java8.seq.Sequence; Sequence<String> seq = Sequence.of("ant", "bean", "coffee...
这是它可以做什么的一些示例: 链接的运算符: seq(1, 2, 3).map(lambda x: x * 2).reduce(lambda x, y: x + y) 富有表现力且功能完善的API 读写text , csv , json , jsonl , sqlite , gzip , bz2和lzma/xz...