ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kotlin Collection Sort Null 원소 끝으로 보내기
    Kotlin🖥 2023. 3. 17. 17:45

    Kotlin을 사용할 때 Collection를 많이 사용하게 된다.

    그리고 List를 정렬해야 하는 경우도 많이 필요하다

     

    이번에 서버에서 내려주는 거리를 이용해서 가까운 순서대로 정렬을 해야 하는 상황이 있었는데

    단순히 Sort로하기에는 조금의 고민사항이 있었는데

    거리가 Nullable이라는 것

    null이 올 일은 거의 없기는 하지만

    그래도 혹시 몰라서 처리를 해두어야 할 거 같았고,

    거리가 null인 원소들을 가장 끝으로 보내는 로직을 짜야했다.

     

    그래서 Sort로 간단하게 하는 방법을 찾아봤다

     

    list.sortedWith(nullsLast(compareBy { it.distance }))

     

    sortWith에 nullsLast라는 함수를 이용해서 compareBy를 넣어주면 완성

    nullsLast는 이름 그대로 null을 마지막으로 빼주는 인라인 함수이다.

    반대로 nullsFirt도 있음

     

    public fun <T : Any> nullsLast(comparator: Comparator<in T>): Comparator<T?> =
        Comparator { a, b ->
            when {
                a === b -> 0
                a == null -> 1
                b == null -> -1
                else -> comparator.compare(a, b)
            }
        }

    내부에서 null 비교

     

    kotlin sort가 퀵정렬이라 위 코드처럼 앞 뒤 원소가 null 일 때마다 위아래로 보내주다 보면

    결국 null이 아래에 쌓이게 된다.

    nullsFirt는 반대 ㅎㅎ

     

    만약 null 구분해서 정렬을 해야한다면 좋은 방법이 될듯!

    'Kotlin🖥' 카테고리의 다른 글

    Stream 그게 뭔데.... Flow 그거 어떻게 하는건데?  (0) 2022.10.24
Designed by Tistory.