scala.collection.mutable.Map 에 기 록 된 문 제 를 해결 합 니 다.
4184 단어 scalacollectionmutableMap
쓰다
val no2ID = scala.collection.mutable.Map[Int,String]()
no2ID += (1 -> "something")
다음 코드 에 서 는 맵 에 요 소 를 추가 할 수 없습니다.
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 파일 은 숫자 와 대응 하 는 사람 이름 입 니 다.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)불가 변 지도
특징:
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)가 변 지도 예특징:
api 풍부 함 은 자바 맵 과 기본적으로 유사 합 니 다.
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)
}
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JDK 11을 사용하여 NixOS에서 Play Framework 실행저는 NixOS로 전환하고 있으며 이에 대해 다소 기대하고 있습니다. 오늘 저는 sbt 설치 및 JDK 11로 다운그레이드를 포함하여 Play Framework 환경을 손쉽게 설치하고 실행할 수 있게 된 것을 축하합...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.