복붙노트

[SCALA] 어떻게지도 [지능은 모든,] 스칼라에서의 SortedMap로 변환합니까? 아니면 TreeMap의?

SCALA

어떻게지도 [지능은 모든,] 스칼라에서의 SortedMap로 변환합니까? 아니면 TreeMap의?

나는의 SortedMap 또는 트리 맵에 맵 [INT, 어떤]를 변환하고 싶습니다. 그것을 할 수있는 쉬운 방법이 있습니까?

해결법

  1. ==============================

    1.가정 당신은 불변의 맵을 사용하고

    가정 당신은 불변의 맵을 사용하고

    val m = Map(1 -> "one")
    val t = scala.collection.immutable.TreeMap(m.toArray:_*)
    

    트리 맵 컴패니언 객체의 메소드가 (적절한 파라미터 유형 Tuple2 [_, _]의 인스턴스) 반복지도 입력 매개 변수를 적용한다. toArray는 [Tuple2 [INT, 문자열] 배열을 생성한다 (이 특정한 경우에). 는 : _ * 배열의 내용을 반복 매개 변수로 취급되도록 컴파일러를 알려줍니다.

  2. ==============================

    2.사용하는 대신 : _ * sblundy 설명 빈의 SortedMap에 기존 맵을 추가하는 것입니다으로

    사용하는 대신 : _ * sblundy 설명 빈의 SortedMap에 기존 맵을 추가하는 것입니다으로

    import scala.collection.immutable.SortedMap
    val m = Map(1 -> ("one":Any))
    val sorted = SortedMap[Int, Any]() ++ m
    
  3. ==============================

    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. ==============================

    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. ==============================

    5.구현의 내부 데이터 구조가 완전히 다르기 때문에, 어쨌든 요소를 ​​하나씩 추가해야합니다. 따라서, 명시 적으로 수행

    구현의 내부 데이터 구조가 완전히 다르기 때문에, 어쨌든 요소를 ​​하나씩 추가해야합니다. 따라서, 명시 적으로 수행

    val m = Map(1 -> "one")
    
    var t = scala.collection.immutable.TreeMap[Int,String]()
    t ++= m
    
  6. ==============================

    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")
    
  7. 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