-
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