복붙노트

[SCALA] 목록에서 고유 항목을 찾는 방법 스칼라

SCALA

목록에서 고유 항목을 찾는 방법 스칼라

어떻게 스칼라에서 목록에서 고유 항목을 찾는 방법은?

해결법

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

    1.이 일을 가장 효율적인 순서 보존 방법은 보조 데이터 구조와 같은 설정을 사용하는 것입니다 :

    이 일을 가장 효율적인 순서 보존 방법은 보조 데이터 구조와 같은 설정을 사용하는 것입니다 :

    def unique[A](ls: List[A]) = {
      def loop(set: Set[A], ls: List[A]): List[A] = ls match {
        case hd :: tail if set contains hd => loop(set, tail)
        case hd :: tail => hd :: loop(set + hd, tail)
        case Nil => Nil
      }
    
      loop(Set(), ls)
    }
    

    우리는 암시 적 변환을 사용하여 일부 좋네요 구문이 포장 할 수 있습니다 :

    implicit def listToSyntax[A](ls: List[A]) = new {
      def unique = unique(ls)
    }
    
    List(1, 1, 2, 3, 4, 5, 4).unique    // => List(1, 2, 3, 4, 5)
    
  2. ==============================

    2.2.8, 그것은이다 :

    2.8, 그것은이다 :

    List(1,2,3,2,1).distinct  // => List(1, 2, 3)
    
  3. ==============================

    3.주문 유지하여 자신의 UNIQ 필터 롤 :

    주문 유지하여 자신의 UNIQ 필터 롤 :

    scala> val l = List(1,2,3,3,4,6,5,6)
    l: List[Int] = List(1, 2, 3, 3, 4, 6, 5, 6)
    
    scala> l.foldLeft(Nil: List[Int]) {(acc, next) => if (acc contains next) acc else next :: acc }.reverse
    res0: List[Int] = List(1, 2, 3, 4, 6, 5)
    
  4. ==============================

    4.당신은 로제타 코드를 참조하는 경우 : 독특한 요소의 순서 만들기

    당신은 로제타 코드를 참조하는 경우 : 독특한 요소의 순서 만들기

    val list = List(1,2,3,4,2,3,4,99)
    val l2 = list.removeDuplicates
    // l2: scala.List[scala.Int] = List(1,2,3,4,99)
    

    목록이 불변이므로, 당신은 removeDuplicates를 호출하여 초기 목록을 수정 실 거예요

    경고 : (!)이 트윗에서 언급 한 바와 같이,이 순서를 보존하지 않습니다 :

    scala> val list = List(2,1,2,4,2,9,3)
    list: List[Int] = List(2, 1, 2, 4, 2, 9, 3)
    
    scala> val l2 = list.removeDuplicates
    l2: List[Int] = List(1, 4, 2, 9, 3)
    

    서열를 들어, 그 방법은 표 929에 따르면, Scala2.8에서 사용할 수 있습니다. 하나는 여기 바와 같이 그 동안 임시 정적 메소드를 정의해야합니다

  5. ==============================

    5.이럴 질문의 모든 해석은 거짓 :

    이럴 질문의 모든 해석은 거짓 :

    이 목록을 감안할 때 :

    val ili = List (1, 2, 3, 4, 4, 3, 1, 1, 4, 1) 
    

    목록에있는 유일한 고유의 항목 2. 기타 항목은 고유하지 않은 것입니다.

    ili.toSet.filter (i => ili.indexOf (i) == ili.lastIndexOf (i))
    

    그것을 발견 할 것이다.

  6. ==============================

    6.

    list.filter { x => list.count(_ == x) == 1 }
    
  7. ==============================

    7.간단한 임시 방법은 거기에서 집합에 목록 및 사용을 추가하는 단지입니다 :

    간단한 임시 방법은 거기에서 집합에 목록 및 사용을 추가하는 단지입니다 :

      val l = List(1,2,3,3,3,4,5,5,6,7,8,8,8,9,9)
      val s = Set() ++ x
      println(s)
    

    생성합니다 :

    > Set(5, 1, 6, 9, 2, 7, 3, 8, 4)
    

    이것을 서열 (또는로 Iterable)에 대한 작동하지만이 removeDuplicates 방법은 아마 더 읽을 수 2.8에 필요하지 않습니다. 또한, 모르겠 더 생각 아웃 변환 대 런타임 성능에 대한.

    또한, 손실 순서를 확인합니다.

  8. ==============================

    8.정의는 독특한 요소를 포함하여 list.toSet 세트부터 그것을 할 것입니다

    정의는 독특한 요소를 포함하여 list.toSet 세트부터 그것을 할 것입니다

  9. from https://stackoverflow.com/questions/1538598/how-in-scala-to-find-unique-items-in-list by cc-by-sa and MIT license