最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

在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ù)字和對(duì)應(yīng)的人名

把RDD使用collect轉(zhuǎn)化成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結(jié)構(gòu)是一種非常常見的結(jié)構(gòu),在各種程序語言都有對(duì)應(yīng)的api,由于Spark的底層語言是Scala,所以有必要來了解下Scala中的Map使用方法。

(1)不可變Map

特點(diǎn):

api不太豐富

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

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

var a:Map[String,Int]=Map("k1"->1,"k2"->2)//初始化構(gòu)造函數(shù)
    a += ("k3"->3)//添加元素
    a += ("k4"->4)//添加元素
    a += ("k1"->100)//已經(jīng)存在添加元素會(huì)覆蓋
    a -= ("k2","k1")//刪除元素
//    a("k1") = "foo"http://不支持
    println(a.contains("k6"))//是否包含某元素
    println(a.size)//打印大小
    println(a.get("k1").getOrElse("default")) //根據(jù)key讀取元素,不存在就替換成默認(rèn)值
    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例子

特點(diǎn):

api豐富與Java中Map基本類似

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

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

def map3(): Unit ={
  //不可變Map+var關(guān)鍵詞修飾例子
  var a:scala.collection.mutable.Map[String,Int]=scala.collection.mutable.Map("k1"->1,"k2"->2)//初始化構(gòu)造函數(shù)
  a += ("k3"->3)//添加元素
  a += ("k4"->4)//添加元素
  a += ("k1"->100)//已經(jīng)存在添加元素會(huì)覆蓋
  a += ("k1"->100,"k9"->9)//添加多個(gè)元素
  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讀取元素,不存在就替換成默認(rèn)值
  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)
}

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

相關(guān)文章

  • 一篇文章帶你搞懂Java線程池實(shí)現(xiàn)原理

    一篇文章帶你搞懂Java線程池實(shí)現(xiàn)原理

    線程池?zé)o論是工作還是面試都是必備的技能,但是很多人對(duì)于線程池的實(shí)現(xiàn)原理卻一知半解,并不了解線程池內(nèi)部的工作原理,今天就帶大家一塊剖析線程池底層實(shí)現(xiàn)原理
    2022-11-11
  • Java在長字符串中查找短字符串的實(shí)現(xiàn)多種方法

    Java在長字符串中查找短字符串的實(shí)現(xiàn)多種方法

    這篇文章主要介紹了Java在長字符串中查找短字符串的實(shí)現(xiàn)多種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • SpringBoot實(shí)現(xiàn)圖形驗(yàn)證碼的操作方法

    SpringBoot實(shí)現(xiàn)圖形驗(yàn)證碼的操作方法

    隨著安全性的要求越來越高,目前許多項(xiàng)目中都使用了驗(yàn)證碼,驗(yàn)證碼也有各種類型,如 圖形驗(yàn)證碼、短信驗(yàn)證碼、郵件驗(yàn)證碼、人臉識(shí)別等,本文給大家介紹SpringBoot實(shí)現(xiàn)圖形驗(yàn)證碼的方法,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • RocketMQ?producer容錯(cuò)機(jī)制源碼解析

    RocketMQ?producer容錯(cuò)機(jī)制源碼解析

    這篇文章主要為大家介紹了RocketMQ?producer容錯(cuò)機(jī)制源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Java強(qiáng)制類型轉(zhuǎn)換原理詳解(父類轉(zhuǎn)子類、子類轉(zhuǎn)父類)

    Java強(qiáng)制類型轉(zhuǎn)換原理詳解(父類轉(zhuǎn)子類、子類轉(zhuǎn)父類)

    這篇文章主要給大家介紹了關(guān)于Java強(qiáng)制類型轉(zhuǎn)換原理(父類轉(zhuǎn)子類、子類轉(zhuǎn)父類)的相關(guān)資料,所謂的強(qiáng)制類型轉(zhuǎn)換,其實(shí)是自動(dòng)類型轉(zhuǎn)換的逆過程,在數(shù)據(jù)類型兼容的情況下,將容量大的數(shù)據(jù)類型轉(zhuǎn)換為容量小的數(shù)據(jù)類型,需要的朋友可以參考下
    2023-12-12
  • Java過濾器Filter的基本使用教程

    Java過濾器Filter的基本使用教程

    過濾器通常對(duì)一些web資源進(jìn)行攔截,做完一些處理器再交給下一個(gè)過濾器處理,直到所有的過濾器處理器,再調(diào)用servlet實(shí)例的service方法進(jìn)行處理。本文將通過示例為大家講解Java中過濾器Filter的用法與實(shí)現(xiàn),需要的可以參考一下
    2023-02-02
  • SpringCloud集成zookeeper實(shí)現(xiàn)服務(wù)注冊(cè)并訪問功能

    SpringCloud集成zookeeper實(shí)現(xiàn)服務(wù)注冊(cè)并訪問功能

    zookeeper和eureka一樣,是用于充當(dāng)服務(wù)注冊(cè)功能服務(wù)器的一個(gè)springcloud插件,這篇文章主要介紹了SpringCloud集成zookeeper實(shí)現(xiàn)服務(wù)注冊(cè)并訪問,需要的朋友可以參考下
    2022-06-06
  • 基于Spring-Security自定義登陸錯(cuò)誤提示信息

    基于Spring-Security自定義登陸錯(cuò)誤提示信息

    這篇文章主要介紹了Spring-Security自定義登陸錯(cuò)誤提示信息,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java程序代碼與文本對(duì)比實(shí)用工具簡介

    java程序代碼與文本對(duì)比實(shí)用工具簡介

    可以對(duì)兩段文本進(jìn)行對(duì)比,檢測(cè)/比較兩個(gè)文本有什么不同的差異,以便修改,常用于程序代碼,就是不需要人工查看,尤其是大文件,有幾百上千行的代碼,這時(shí)候就建議使用比較工具了,不用浪費(fèi)過多時(shí)間去尋找
    2021-09-09
  • idea中項(xiàng)目前端網(wǎng)頁圖標(biāo)不顯示的原因及解決

    idea中項(xiàng)目前端網(wǎng)頁圖標(biāo)不顯示的原因及解決

    這篇文章主要介紹了idea中項(xiàng)目前端網(wǎng)頁圖標(biāo)不顯示的原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評(píng)論

庆阳市| 黄陵县| 灌阳县| 柯坪县| 昌图县| 五常市| 简阳市| 中方县| 姜堰市| 蒲城县| 仪陇县| 龙山县| 关岭| 平南县| 那曲县| 佳木斯市| 湖北省| 琼中| 河东区| 九台市| 黄浦区| 女性| 涿州市| 石泉县| 阿克陶县| 砚山县| 岳阳市| 盱眙县| 军事| 连平县| 读书| 滨州市| 宜章县| 隆尧县| 广南县| 沁阳市| 双桥区| 缙云县| 仙居县| 恩施市| 阿鲁科尔沁旗|