[SCALA] 어떻게 스칼라 mutable.Map에 immutable.Map을 변환 할 수 있습니까?
SCALA어떻게 스칼라 mutable.Map에 immutable.Map을 변환 할 수 있습니까?
내가지도의 값을 업데이트 할 수 있도록 어떻게 스칼라 mutable.Map에 immutable.Map을 변환 할 수 있습니까?
해결법
-
==============================
1.가장 깨끗한 방법은 mutable.Map 공장을 가변 인자 사용하는 것입니다. ++ 접근 방식과는 달리, 이것은 CanBuildFrom 메커니즘을 사용하고, 라이브러리 코드이 활용하도록 작성된 경우 그래서 더 효율적으로 잠재력을 가지고있다 :
가장 깨끗한 방법은 mutable.Map 공장을 가변 인자 사용하는 것입니다. ++ 접근 방식과는 달리, 이것은 CanBuildFrom 메커니즘을 사용하고, 라이브러리 코드이 활용하도록 작성된 경우 그래서 더 효율적으로 잠재력을 가지고있다 :
val m = collection.immutable.Map(1->"one",2->"Two") val n = collection.mutable.Map(m.toSeq: _*)
지도는 쌍의 순서로 볼 수 있기 때문에이 작동합니다.
-
==============================
2.
val myImmutableMap = collection.immutable.Map(1->"one",2->"two") val myMutableMap = collection.mutable.Map() ++ myImmutableMap
-
==============================
3.어떻게 collection.breakOut 사용에 대한?
어떻게 collection.breakOut 사용에 대한?
import collection.{mutable, immutable, breakOut} val myImmutableMap = immutable.Map(1->"one",2->"two") val myMutableMap: mutable.Map[Int, String] = myImmutableMap.map(identity)(breakOut)
-
==============================
4.불변의지도에서 가져온 기본 값이 비어있는 가변지도를 제작하는 변형이 있습니다. 당신은 값을 저장하고 언제든지 기본값을 대체 할 수있다 :
불변의지도에서 가져온 기본 값이 비어있는 가변지도를 제작하는 변형이 있습니다. 당신은 값을 저장하고 언제든지 기본값을 대체 할 수있다 :
scala> import collection.immutable.{Map => IMap} //import collection.immutable.{Map=>IMap} scala> import collection.mutable.HashMap //import collection.mutable.HashMap scala> val iMap = IMap(1 -> "one", 2 -> "two") //iMap: scala.collection.immutable.Map[Int,java.lang.String] = Map((1,one), (2,two)) scala> val mMap = new HashMap[Int,String] { | override def default(key: Int): String = iMap(key) | } //mMap: scala.collection.mutable.HashMap[Int,String] = Map() scala> mMap(1) //res0: String = one scala> mMap(2) //res1: String = two scala> mMap(3) //java.util.NoSuchElementException: key not found: 3 // at scala.collection.MapLike$class.default(MapLike.scala:223) // at scala.collection.immutable.Map$Map2.default(Map.scala:110) // at scala.collection.MapLike$class.apply(MapLike.scala:134) // at scala.collection.immutable.Map$Map2.apply(Map.scala:110) // at $anon$1.default(<console>:9) // at $anon$1.default(<console>:8) // at scala.collection.MapLike$class.apply(MapLike.scala:134).... scala> mMap(2) = "three" scala> mMap(2) //res4: String = three
주의 (렉스 커에 의해 주석 참조) : 당신은 불변의 맵에서 나오는 요소를 제거 할 수 없습니다 :
scala> mMap.remove(1) //res5: Option[String] = None scala> mMap(1) //res6: String = one
-
==============================
5..TO (공장) 적용 공장 건축업자를 통해 스칼라 2.13에 시작 :
.TO (공장) 적용 공장 건축업자를 통해 스칼라 2.13에 시작 :
Map(1 -> "a", 2 -> "b").to(collection.mutable.Map) // collection.mutable.Map[Int,String] = HashMap(1 -> "a", 2 -> "b")
from https://stackoverflow.com/questions/5042878/how-can-i-convert-immutable-map-to-mutable-map-in-scala by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 스칼라 : foldLeft 대 배 (0) | 2019.11.16 |
---|---|
[SCALA] 스칼라 2.10에서 문자열 보간 - 어떻게 문자열 변수를 보간하는? (0) | 2019.11.16 |
[SCALA] 동적 스칼라 2.11 런타임에 스칼라 클래스 파일을 컴파일 (0) | 2019.11.16 |
[SCALA] 밀봉 특성의 서브 클래스를 얻기 (0) | 2019.11.16 |
[SCALA] 어셈블리 병합-전략 문제 SBT-어셈블리를 사용 (0) | 2019.11.16 |