윤굥굥
yg323
윤굥굥
전체 방문자
오늘
어제
  • 굥굥 DEV
    • Computer Science
      • 자료구조 및 알고리즘
      • 운영체제
      • 네트워크
      • 데이터베이스
    • Programming Language
      • Java
      • Kotlin
    • Android
      • with Kotlin
    • Algorithm
      • with Kotlin
    • 하나씩 습득하는 중

블로그 메뉴

  • ↓백준 모아보기 ↓
  • 💚 플레티넘 문제 모아보기
  • 💛 골드 문제 모아보기
  • 🤍 실버 문제 모아보기
  • 🤎 브론즈 문제 모아보기

공지사항

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
윤굥굥

yg323

Programming Language/Kotlin

[Kotlin Tips] Deduplicating Collection Items

2022. 6. 6. 10:58

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() 함수는 비교를 위한 것이지 결과 값이 소문자로 바뀌어서 나오지는 않는다! 

저작자표시 비영리 변경금지 (새창열림)
    'Programming Language/Kotlin' 카테고리의 다른 글
    • [Kotlin Tips] Kotlin에서 Shadowing을 다루는 방법
    • [공식문서를 읽자] Classes and objects - Properties
    • [공식문서를 읽자] Classes and objects - Inheritance
    • [공식문서를 읽자] Classes and objects - Classes
    윤굥굥
    윤굥굥

    티스토리툴바