STL to Collection (2)
cpp에서 사용하는 Queue, Deque, PriorityQueue 을 java, kotlin 으로 치환해봅니다.
메소드별 반환값에 차이가 있습니다.
실패시의 예외를 발생시키느냐, null 혹은 false를 반환하느냐의 차이가 있습니다.
| 동작 | 예외 발생 | 값 반환 |
|---|---|---|
| 값 삽입 | add(e) | offer(e) / true or false |
| 값 제거 | remove() | poll() / element or null |
| 값 확인 | element() | peek() / element or null |
참고:
LinkedList구현체에서는 null 삽입이 가능합니다.
1 | |
Queue
cpp
1 | |
java
1 | |
kotlin
1 | |
Deque
cpp
1 | |
java
1 | |
kotlin
1 | |
- 링크드 리스트, 배열기반의 차이가 있어 성능상의 차이가 존재한다.
- 추가적으로 함수 호출방식도 조금 다르다.
PriorityQueue
기본 문법
cpp
1 | |
java
1 | |
기본 정렬 구조
Cpp의 경우에는 기본이 MaxHeap, java, kotlin 의 경우에는 MinHeap 으로 작동한다.
cpp
1 | |
java
1 | |
kotlin
1 | |
역순 정렬
cpp Max to Min
cpp
1 | |
java
java Min to Max
1 | |
kotlin
1 | |
만든 구조체 or 객체 정렬 기준을 세워주기
cpp
1 | |
java(1)
Comparable 인터페이스를 상속해 구현하는 방법
- 기본적인 정렬방식을 정의해준다.
1 | |
1 | |
1 | |
java(2)
Comporator를 이용하는방법
- 내가 클래스를 직접 건들 수 없는 경우에 사용된다.
- 혹은 클래스에 정의된 기본 정렬방식과는 다른 정렬기준이 잠시 필요한경우 사용한다.
1 | |
람다를 이용해 간결화
1 | |
Kotlin
기본 정렬 조건 세워 주기 (
Comparable구현)
1 | |
1 | |
compareValuesBy를 통해서, 간결하게 비교 우선순위를 정해 줄 수 있다.
정렬조건 만들어주기
Comparator삽입
1 | |
- Comparator 를 반환하는
comapreBy<객체>{조건}으로 넣어주기 - 직접 Comparator 를 정의하고 로직도 넣어주기
- 2번을 람다식으로 풀어주기