STL to Collection (5)
cpp에서 사용하는 정렬 관련기능을 java, kotlin 로 치환해 봅니다.
기본 자료형 정렬
cpp
1 |
|
java(1) Collections.sort()
Collections.sort()
1 |
|
java8 미만의 버전
1 |
|
java(2) instance.sort()
instance.sort()
1 |
|
java 8 미만의 버전
1 |
|
java(3) static method 이용
use static method
1 |
|
java(4) Arrays.sort()
Arrays.sort()
1 |
|
- 사용하지 않는것을 권장합니다
- unstable하며 최악의 경우
O(N^2)
의 시간복잡도를 가질 수 있습니다. - Double pivot quick sort로 동작하기 때문에, 대신 Tim Sort로 동작하는
Collections.sort()
를 사용하는것을 권장합니다. - 이부분의 대한 내용은 따로 정리해서 소개할 예정입니다.
Kotlin
1 |
|
1 |
|
객체 정렬 Basic
1 |
|
sortedBy
를 이용해 정렬조건을 넣어줄 수 있다.sortedWith
를 이용해 comparator 를 넣어줄 수도 있는데, 이때comparator
를compareBy
로 전달해 줄 수 있다.
역순 정렬
cpp
1 |
|
java
1 |
|
kotlin
1 |
|
1 |
|
Stable 정렬
cpp
1 |
|
java
위에서 설명한
Collections.sort()
를 사용하면 됩니다.
1 |
|
kotlin
- kotlin 의 경우에는 기본 sort 역시 stable sort 입니다. docs
The sort is stable. It means that equal elements preserve their order relative to each other after sorting.
문자열 정렬
cpp 생략
1 |
|
- 문자열 대소로 정렬합니다.
1 |
|
1 |
|
1 |
|
- cpp와 마찬가지로 숫자형태를 가진 문자열인 경우, 앞에
"0"
이 있는 경우를 주의해야 합니다.
객체, 구조체정렬
java
- 위에서 셜명한 방법인
Comparator
와static method
,Comparable
를 사용하는 방법이 있습니다. STL to Collection (PriorityQueue) 에 적은 내용으로 대체합니다. - 정렬 조건이 여러개인 경우는 이 글로 대체합니다.
kotlin
여러 조건을 넣어 정렬
1 |
|
thenByDescending
을 이용해서 음수 연산이 불가능한 경우(ZoneDateTime) 도 내림차순으로 처리해줄 수 있습니다.