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또는 주문이 중요하지 않은 경우 사용할 수 있습니다 . toMutableSetdistincttoHashSet
to*Set(공간 및 시간) 더 효율적 이고 2) 는 전체 객체 동등성 비교를 피할 수 있기 때문에 단순한 것보다 더 효율적일 수 있습니다 . 둘 다 유효한 포인트입니다. 나는 "확실히 항상 오버 헤드가없는"나는 그에게 회신하고 비교하고 있음을 간과 것을 당신의 문 실행 과 함께 (그리고distinct[By]SetSetListdistinctBydistinctdistinctdistinctByto*Set ).
Iterable.distinct실제로 toMutableSet().toList()내부적으로 수행합니다. 그러니 성능에 대해 걱정하지 마세요 :-)