https://www.youtube.com/watch?v=ECOf0PeSANw
코틀린의 콜렉션 (리스트, Set,,) 에서 중복을 제거하는 방법에 대해서 꿀팁을 알려준다고 한다!
val fruitBasket = listOf(
"Apple",
"Banana",
"Cherry",
"Apple",
"Apple",
"APPLE",
"BANANA",
"Durian"
)
자 요런 리스트가 있다고 생각해보자~!
이때 여기서 중복된 과일이 보인다! Apple이 왜이렇게 많은 거야,,?!
여기서 중복된 과일을 지워보자! 이때 어떤 방법이 생각나나요? 일단 두가지 방법이 머릿속에 삭 스칠 것이다.
방법 1. distinct() 함수를 사용한다.
fun main() {
val unique = fruitBasket.distinct()
println(unique)
}
방법 2. set()을 사용한다.
fun main() {
val set = fruitBasket.toSet()
println(set)
}
실행결과
[Apple, Banana, Cherry, APPLE, BANANA, Durian]
[Apple, Banana, Cherry, APPLE, BANANA, Durian]
같은 결과를 내는 것을 볼 수 있다.
여기까지만 본다면 꿀팁이라고 할 수 없다!! set으로 바꾸는건 파이썬도 되고.. 그런데 이게 뭐? 라는 생각도 드는게 당연한걸 😉
실행 결과에서 볼 수 있듯 Apple랑 APPLE랑도 같은 것으로 취급하고 싶다! 할때 어떻게 해야될까?
코틀린에서는 distinctBy 함수를 제공해준다! 이걸 사용하면 내가 특별한 처리(?)를 해서 대소문자 구분 없이 중복을 제거해줄 수 있다.
fun main() {
val reallyUnique = fruitBasket.distinctBy {
it.Lowercase()
}
println(reallyUnique)
}
요렇게! 사용한다면 결과 값은 다음과 같다.
[Apple, Banana, Cherry, Durian]
신기하지 않나요..? 이런 매력들 때문에 코틀린을 더 사용하는 것 같다!
참고로 Lowercase() 함수는 비교를 위한 것이지 결과 값이 소문자로 바뀌어서 나오지는 않는다!