[SCALA] 목록에서 고유 항목을 찾는 방법 스칼라
SCALA목록에서 고유 항목을 찾는 방법 스칼라
어떻게 스칼라에서 목록에서 고유 항목을 찾는 방법은?
해결법
-
==============================
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.8, 그것은이다 :
2.8, 그것은이다 :
List(1,2,3,2,1).distinct // => List(1, 2, 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.당신은 로제타 코드를 참조하는 경우 : 독특한 요소의 순서 만들기
당신은 로제타 코드를 참조하는 경우 : 독특한 요소의 순서 만들기
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.이럴 질문의 모든 해석은 거짓 :
이럴 질문의 모든 해석은 거짓 :
이 목록을 감안할 때 :
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.
list.filter { x => list.count(_ == x) == 1 }
-
==============================
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.정의는 독특한 요소를 포함하여 list.toSet 세트부터 그것을 할 것입니다
정의는 독특한 요소를 포함하여 list.toSet 세트부터 그것을 할 것입니다
from https://stackoverflow.com/questions/1538598/how-in-scala-to-find-unique-items-in-list by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 나는 두 개 이상의 목록 스칼라에서 함께 압축 할 수 있습니까? (0) | 2019.11.19 |
---|---|
[SCALA] 스칼라 : asInstanceOf [T] 및 (T O) 사이의 차이점은 무엇인가? (0) | 2019.11.19 |
[SCALA] 더 나은 문자열 스칼라에 서식 (0) | 2019.11.19 |
[SCALA] 스칼라 메모이 제이션 : 어떻게이 스칼라 메모 작동합니까? (0) | 2019.11.19 |
[SCALA] 스칼라에서 튜플에 케이스 클래스를 변환하는 쉬운 방법은 무엇입니까? (0) | 2019.11.19 |