欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決scala.collection.mutable.Map寫入的問題

 更新時間:2021年06月10日 16:31:52   作者:Xkoney1028  
這篇文章主要介紹了解決scala.collection.mutable.Map寫入的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

在scala中可變Map寫入

使用

val no2ID = scala.collection.mutable.Map[Int,String]()
no2ID += (1 -> "something")

而在以下代碼中,Map不能添加元素

val no2ID = scala.collection.mutable.Map[Int,String]()
sc.textFile(conf).foreach(line=>{
val splits = line.split(“,”)
val no = splits(0).trim.toInt
val ID = splits(1)
no2ID += (no -> ID)
})

其中conf文件為數(shù)字和對應的人名

把RDD使用collect轉化成Array后,可以向Map添加元素

val no2ID = scala.collection.mutable.Map[Int,String]()
sc.textFile(conf).collect().foreach(line=>{
val splits = line.split(“,”)
val no = splits(0).trim.toInt
val ID = splits(1)
no2ID += (no -> ID)
})

scala中的Map使用例子

Map結構是一種非常常見的結構,在各種程序語言都有對應的api,由于Spark的底層語言是Scala,所以有必要來了解下Scala中的Map使用方法。

(1)不可變Map

特點:

api不太豐富

如果是var修飾,引用可變,支持讀寫

如果是val修飾,引用不可變,只能寫入一次值,其后只讀

var a:Map[String,Int]=Map("k1"->1,"k2"->2)//初始化構造函數(shù)
    a += ("k3"->3)//添加元素
    a += ("k4"->4)//添加元素
    a += ("k1"->100)//已經(jīng)存在添加元素會覆蓋
    a -= ("k2","k1")//刪除元素
//    a("k1") = "foo"http://不支持
    println(a.contains("k6"))//是否包含某元素
    println(a.size)//打印大小
    println(a.get("k1").getOrElse("default")) //根據(jù)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()//數(shù)據(jù)清空使用再次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
    
    //下面自定義按英文字母或數(shù)字排序
    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)//初始化構造函數(shù)
  a += ("k3"->3)//添加元素
  a += ("k4"->4)//添加元素
  a += ("k1"->100)//已經(jīng)存在添加元素會覆蓋
  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")) //根據(jù)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
  
      //下面自定義按英文字母或數(shù)字排序
  implicit  val KeyOrdering=new Ordering[String] {
    override def compare(x: String, y: String): Int = {
      x.compareTo(y)
    }
  }
  println(a.toSeq.sorted)
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 使用ElasticSearch6.0快速實現(xiàn)全文搜索功能的示例代碼

    使用ElasticSearch6.0快速實現(xiàn)全文搜索功能的示例代碼

    本篇文章主要介紹了使用ElasticSearch6.0快速實現(xiàn)全文搜索功能,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • 深入理解Spring的事務傳播行為

    深入理解Spring的事務傳播行為

    spring特有的事務傳播行為,spring支持7種事務傳播行為,確定客戶端和被調用端的事務邊界(說得通俗一點就是多個具有事務控制的service的相互調用時所形成的復雜的事務邊界控制),這篇文章主要給大家介紹了關于Spring事務傳播行為的相關資料,需要的朋友可以參考下。
    2018-02-02
  • Java中字符串String的+和+=及循環(huán)操作String原理詳解

    Java中字符串String的+和+=及循環(huán)操作String原理詳解

    Java編譯器在編譯時對String的+和+=操作會創(chuàng)建StringBuilder對象來進行字符串的拼接,下面這篇文章主要給大家介紹了關于Java中字符串String的+和+=及循環(huán)操作String原理的相關資料,需要的朋友可以參考下
    2023-01-01
  • 部署springboot項目到云服務器的兩種方式(jar+war)

    部署springboot項目到云服務器的兩種方式(jar+war)

    本文主要介紹了部署springboot項目到云服務器的兩種方式,主要介紹了jar和war兩種方式,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • SpringBoot整合mybatisplus和druid的示例詳解

    SpringBoot整合mybatisplus和druid的示例詳解

    這篇文章主要介紹了SpringBoot整合mybatisplus和druid的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-08-08
  • Java反射之類的實例對象的三種表示方式總結

    Java反射之類的實例對象的三種表示方式總結

    下面小編就為大家?guī)硪黄狫ava反射之類的實例對象的三種表示方式總結。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • java單向鏈表的實現(xiàn)實例

    java單向鏈表的實現(xiàn)實例

    java單向鏈表的實現(xiàn)實例。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • Spring中的Eureka服務過期詳細解析

    Spring中的Eureka服務過期詳細解析

    這篇文章主要介紹了Spring中的Eureka服務過期詳細解析,如果有一些服務過期了,或者宕機了,就不會調用shutdown()方法,也不會去發(fā)送請求下線服務實例,需要的朋友可以參考下
    2023-11-11
  • Java圖片處理開源框架Thumbnailator

    Java圖片處理開源框架Thumbnailator

    這篇文章主要為大家詳細介紹了Java圖片處理開源框架Thumbnailator的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • junit4教程junit4.5官方下載

    junit4教程junit4.5官方下載

    前提:本文假設讀者已經(jīng)具有使用JUnit 4以前版本的經(jīng)驗。
    2008-09-09

最新評論