코틀린의 배열, 리스트에서는 distinct() 함수를 이용하여 손쉽게 배열과 리스트에서 중복된 값을 제거할 수 있습니다.
단, 기존의 배열, 리스트에는 영향을 끼지치 않습니다.
예시 코드
fun main() {
val array = arrayOf(1, 3, 2, 1, 4, 1, 7, 2, 6, 1)
val arrayList = mutableListOf<String>()
for (no in 1..10) {
arrayList.add("same")
}
// Array 출력
array.forEach { print("$it ") } // 1 3 2 1 4 1 7 2 6 1 출력
println()
// Array에 distinct 후 출력 - 중복 삭제 후
array.distinct().forEach { print("$it ") } // 1 3 2 4 7 6 출력
println()
// 원래 배열에는 영향을 미치지 않음. - 원래 배열 그대로 출력
array.forEach { print("$it ") } // 1 3 2 1 4 1 7 2 6 1
// mutableList
arrayList.forEach { print("$it ") } // same same same same same same same same same same
println()
// mutableList에 distinct 후 출력 - 중복 삭제 후
arrayList.distinct().forEach { print("$it ") } // same 출력
println()
}
fun returnMutableList(mutableList : MutableList<String>) : MutableList<String>{
return mutableList.distinct().toMutableList()
}
fun returnArray(array: Array<String>) : Array<String>{
return array.distinct().toTypedArray()
}
val array = arrayOf(1, 3, 2, 1, 4, 1, 7, 2, 6, 1)
val arrayList = mutableListOf<String>()
for (no in 1..10) {
arrayList.add("same")
}
Int 의 배열인 array 와 mutableList<String>인 arrayList가 있습니다.
array 의 요소는 (1, 3, 2, 1, 4, 1, 7, 2, 6, 1)
arrayList의 요소는 "same" 이 10개 입니다.
Array 출력
// Array 출력
array.forEach { print("$it ") } // 1 3 2 1 4 1 7 2 6 1 출력
println()
// Array에 distinct 후 출력 - 중복 삭제 후
array.distinct().forEach { print("$it ") } // 1 3 2 4 7 6 출력
println()
일반 array를 출력하면 요소들을 전부 출력하는 것을 확인할 수 있습니다. - 1 3 2 1 4 1 7 2 6 1 출력
중복을 제거하는 함수인 distinct()를 사용하면 중복이 제외된 결과를 출력하는 것을 볼 수 있습니다. - 1 3 2 4 7 6 출력
// 원래 배열에는 영향을 미치지 않음. - 원래 배열 그대로 출력
array.forEach { print("$it ") } // 1 3 2 1 4 1 7 2 6 1
기존의 배열인 array자체에는 영향을 미치지 않는 것을 확인할 수 있습니다.
mutableList 출력
// mutableList
arrayList.forEach { print("$it ") } // same same same same same same same same same same 출력
println()
// mutableList에 distinct 후 출력 - 중복 삭제 후
arrayList.distinct().forEach { print("$it ") } // same 출력
println()
마찬가지로 arrayList를 출력해보면 "same" 이 10 번 출력되는 모습을 확인할 수 있습니다.
중복을 제거하는 함수인 distinct()를 사용하면 중복된 "same"들이 모두 제거되고 한 번만 출력되는 것을 볼 수 있습니다.
distinct()의 리턴값은?
MutableList<String>를 인자로 받고 MutableList<String>를 반환해주는 returnmutableList() 함수를 만들어 보았습니다.
mutableList에 distinct()를 사용한 것을 반환하려면 리턴타입이 List<String>이라서 오류가 발생합니다.
이 부분에서 distinct()를 사용한 리턴값은 List인것을 확인할 수 있습니다.
toMutableList()를 사용하여 MutableList로 변환시켜주면 리턴타입인 MutableList와 동일하기 때문에 오류가 발생하지 않습니다!
Array<String>을 인자로 받고 Array<String>을 반환하는 returnArray() 함수도 동일한 오류가 발생합니다.
마찬가지로 distinct()를 사용하였더니 List<String> 타입으로 변한 것을 볼 수 있습니다.
마찬가지로 toTypedArray()를 사용하여 Array로 변환시켜주면 오류가 발생하지 않습니다.
'코틀린[Kotlin]' 카테고리의 다른 글
코틀린[Kotlin] 컬렉션 정리 - 정렬편(About the Collections in Kotlin - Sort) (0) | 2022.05.13 |
---|---|
코틀린[Kotlin] 컬렉션 정리 - 기본편(About the Collections in Kotlin - Basic) (0) | 2022.05.13 |
코틀린[Kotlin] 괄호와 공백을 포함한 문자열을 리스트로 만들기 (0) | 2022.03.22 |
코틀린[Kotlin] 컬렉션 API : filter, map, all, any, count, find(firstOrNull) (0) | 2022.02.21 |
코틀린[Kotlin] 가위바위보하고 결과를 출력해주기 (0) | 2022.02.04 |
최근댓글