[SCALA] 어떻게지도 [지능은 모든,] 스칼라에서의 SortedMap로 변환합니까? 아니면 TreeMap의?
SCALA어떻게지도 [지능은 모든,] 스칼라에서의 SortedMap로 변환합니까? 아니면 TreeMap의?
나는의 SortedMap 또는 트리 맵에 맵 [INT, 어떤]를 변환하고 싶습니다. 그것을 할 수있는 쉬운 방법이 있습니까?
해결법
-
==============================
1.가정 당신은 불변의 맵을 사용하고
가정 당신은 불변의 맵을 사용하고
val m = Map(1 -> "one") val t = scala.collection.immutable.TreeMap(m.toArray:_*)
트리 맵 컴패니언 객체의 메소드가 (적절한 파라미터 유형 Tuple2 [_, _]의 인스턴스) 반복지도 입력 매개 변수를 적용한다. toArray는 [Tuple2 [INT, 문자열] 배열을 생성한다 (이 특정한 경우에). 는 : _ * 배열의 내용을 반복 매개 변수로 취급되도록 컴파일러를 알려줍니다.
-
==============================
2.사용하는 대신 : _ * sblundy 설명 빈의 SortedMap에 기존 맵을 추가하는 것입니다으로
사용하는 대신 : _ * sblundy 설명 빈의 SortedMap에 기존 맵을 추가하는 것입니다으로
import scala.collection.immutable.SortedMap val m = Map(1 -> ("one":Any)) val sorted = SortedMap[Int, Any]() ++ m
-
==============================
3.여기에 다양한 스칼라 컬렉션 사이의 변환하는 일반적인 방법입니다.
여기에 다양한 스칼라 컬렉션 사이의 변환하는 일반적인 방법입니다.
import collection.generic.CanBuildFrom import collection.immutable.TreeMap object test { class TraversableW[A](t: Traversable[A]) { def as[CC[X] <: Traversable[X]](implicit cbf: CanBuildFrom[Nothing, A, CC[A]]): CC[A] = t.map(identity)(collection.breakOut) def to[Result](implicit cbf: CanBuildFrom[Nothing, A, Result]): Result = t.map(identity)(collection.breakOut) } implicit def ToTraverseableW[A](t: Traversable[A]): TraversableW[A] = new TraversableW[A](t) List(1, 2, 3).as[Vector] List(1, 2, 3).to[Vector[Int]] List((1, 1), (2, 4), (3, 4)).to[Map[Int, Int]] List((1, 1), (2, 4), (3, 4)).to[TreeMap[Int, Int]] val tm: TreeMap[Int, Int] = List((1, 1), (2, 4), (3, 4)).to ("foo": Seq[Char]).as[Vector] } test
스칼라 2.8 브레이크 아웃 : 또한 collection.breakOut을 설명하는이 질문을 참조하십시오
도전
그것은 implicits을 조정 같은이 작품이 있다고 할 수 있습니까? 에 이동에 추가 된 같은 경우 또는이 유일하게 가능한 것입니까?
"foo".as[Vector]
-
==============================
4.다음은 스칼라 암시 클래스와 함께 할 수있는 방법이있다 :
다음은 스칼라 암시 클래스와 함께 할 수있는 방법이있다 :
implicit class ToSortedMap[A,B](tuples: TraversableOnce[(A, B)]) (implicit ordering: Ordering[A]) { def toSortedMap = SortedMap(tuples.toSeq: _*) }
맵 [A, B] 이후 TraversableOnce [Tuple2 [A, B]는 다음 작품 내재적 경로를 가지고
scala> Map("b" -> 3, "c" -> 3, "a" -> 5).toSortedMap res6: scala.collection.immutable.SortedMap[String,Int] = Map(a -> 5, b -> 3, c -> 3)
심지어 toMap 유사 튜플의 목록에서 작동합니다 :
scala> List(("c", 1), ("b", 3),("a", 6)).toSortedMap res7: scala.collection.immutable.SortedMap[String,Int] = Map(a -> 6, b -> 3, c -> 1)
-
==============================
5.구현의 내부 데이터 구조가 완전히 다르기 때문에, 어쨌든 요소를 하나씩 추가해야합니다. 따라서, 명시 적으로 수행
구현의 내부 데이터 구조가 완전히 다르기 때문에, 어쨌든 요소를 하나씩 추가해야합니다. 따라서, 명시 적으로 수행
val m = Map(1 -> "one") var t = scala.collection.immutable.TreeMap[Int,String]() t ++= m
-
==============================
6..TO (공장) 적용 공장 건축업자를 통해 스칼라 2.13에 시작 :
.TO (공장) 적용 공장 건축업자를 통해 스칼라 2.13에 시작 :
Map(1 -> "a", 2 -> "b").to(collection.immutable.SortedMap) // collection.immutable.SortedMap[Int,String] = TreeMap(1 -> "a", 2 -> "b")
Map(1 -> "a", 2 -> "b").to(collection.immutable.TreeMap) // collection.immutable.TreeMap[Int,String] = TreeMap(1 -> "a", 2 -> "b")
from https://stackoverflow.com/questions/3074118/how-do-i-convert-a-mapint-any-to-a-sortedmap-in-scala-or-a-treemap by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 스칼라의 byte 배열로 파일을 읽는 방법 (0) | 2019.11.25 |
---|---|
[SCALA] 매크로에서 익명 클래스의 방법과 구조 유형을 얻기 (0) | 2019.11.25 |
[SCALA] 이클립스는 SBT에서 종속성을 인식해야하는 방법 (0) | 2019.11.25 |
[SCALA] 멀티 프로젝트에서 SBT 테스트 - 종속 관계 : 종속 프로젝트에 테스트 - 코드 사용 가능 확인 (0) | 2019.11.25 |
[SCALA] 개인 및 스칼라에서 생성자를 보호 (0) | 2019.11.25 |