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번을 람다식으로 풀어주기