Array<String?>
kotlin 에서 중복을 제거하는 방법 은 무엇입니까?
답변:
사용 distinct
확장 기능 :
val a = arrayOf("a", "a", "b", "c", "c")
val b = a.distinct() // ["a", "b", "c"]
항목을 구별하는 방법을 지정할 수있는 distinctBy
기능 도 있습니다.
val a = listOf("a", "b", "ab", "ba", "abc")
val b = a.distinctBy { it.length } // ["a", "ab", "abc"]
따라 @ mfulton26 제안, 당신은 또한 사용할 수 있습니다 toSet
, toMutableSet
당신이 보존 될 수있는 원래의 순서가 필요하지 않은 경우, 그리고 toHashSet
. 이 기능은 생산 Set
대신의를 List
하고보다 조금 더 효율적이어야한다 distinct
.
유용 할 수 있습니다.
toSet
또는 주문이 중요하지 않은 경우 사용할 수 있습니다 . toMutableSet
distinct
toHashSet
to*Set
(공간 및 시간) 더 효율적 이고 2) 는 전체 객체 동등성 비교를 피할 수 있기 때문에 단순한 것보다 더 효율적일 수 있습니다 . 둘 다 유효한 포인트입니다. 나는 "확실히 항상 오버 헤드가없는"나는 그에게 회신하고 비교하고 있음을 간과 것을 당신의 문 실행 과 함께 (그리고distinct[By]
Set
Set
List
distinctBy
distinct
distinct
distinctBy
to*Set
).
Iterable.distinct
실제로 toMutableSet().toList()
내부적으로 수행합니다. 그러니 성능에 대해 걱정하지 마세요 :-)