반응형

코틀린의 배열, 리스트에서는 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로 변환시켜주면 오류가 발생하지 않습니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기