>

지도 구조가 다음과 같습니다 :

val map = mutable.Map[String, Double].empty

이와 같이 내지도에 가치를 추가 할 때

map("apple") = 10.34

하지만 애플의 다음 가치를 위해 10.34에 추가하고 싶습니다.

val oldVal = map("apple")
map("apple) = oldVal + 2.34

이보다 빠른 방법이 있습니까? 큰 파일을 읽고 맵에서 빠른 업데이트를 원하기 때문에. 조언 해 주셔서 감사합니다.

  • 답변 # 1

       val map = mutable.Map.empty[String, Double].withDefaultValue(0.0)
        //put new
        map("apple") = 10.34
        //update existing
        map("apple") += 2.34
        //update not existing
        map("orange") += 0.34
    
    

  • 답변 # 2

    스칼라를 사용할 때는 일반적으로 가변 객체를 사용하지 않는 것이 좋습니다. 이것은 Scala에서 매우 간단한 동시성 문제를 피하기위한 것입니다.

    질문을 올바르게 이해했다면 값으로 업데이트하려는 맵이 있습니다. 파일에서 읽을 때 추가 할 값으로 새 맵을 만들 수 있습니다.

    val m = Map("a" -> 1, "b" -> 2)
    val other = Map("a" -> 3, "c" -> 4) // created from a file
    
    

    이제 이것을 얻기 위해 첫 번째 맵을 두 번째 맵의 값으로 업데이트 할 수 있습니다 :

    val updated = m.map{ case (k, v) => { if(other.contains(k)) {(k, v + other.get(k).get)} else (k,v) }}
    
    

    이제 업데이트를 사용하여 다른 작업을 수행 할 수 있습니다.

관련 자료

  • 이전 python - NumPy 어레이의 최소-최대 정규화
  • 다음 중첩 루프 파이썬