STL to Collection (1)
cpp에서 사용하는 Map, Set을 java로 치환해봅니다.
Map
기본 문법
cpp
1 |
|
java
1 |
|
kotlin
1 |
|
순회하기
cpp
1 |
|
java
1 |
|
- 개인적으로
keySet()
을 쓰는것이 제일 편하다고 느낍니다. - 참고로 java에서 Map은 Collection으로 취급하지 않습니다.
1 |
|
- 공식문서 링크
- Map의 경우 Key와 value를 쌍으로 저장하기 떄문에, Collection 인터페이스의 의미가 모호해진다는 문제가 있기 때문입니다.
kotlin
1 |
|
없는 값에 접근하는 경우
cpp
1 |
|
java
1 |
|
- cpp의 경우
used[key]
로 없는 key값에 접근하는경우, 디폴트값이 자동으로 들어가게 됩니다. - 하지만 java의 경우 Exception 이 발생하게 됩니다.
getOrDefefault(key, defaultValue)
1 |
|
getOrDefault()
를 이용해 공수를 좀 더 줄일 수 있습니다.
kotllin
1 |
|
Map<T, List<T>>
형태를 를 다루는 경우
1 |
|
Set
기본 문법
cpp
1 |
|
java
1 |
|
kotlin
1 |
|
1 |
|
Array to Set
cpp
1 |
|
java
1 |
|
- 일반적으로 많은 저지 사이트에서 cpp의 경우
vector
를 인자로 제공하지만, Java의 경우int[]
를 인자로 제공합니다. - 즉 Java의 경우 boxing 작업이 추가적으로 필요해지는 경우가 종종 발생합니다.
- Array(primitive) to List도 비슷한 방법으로 운영됩니다.
1 |
|
- List인 경우 심플하게 해결이 되는데, 좀 아쉬운 부분입니다.
kotlin
1 |
|
MultiSet
cpp
1 |
|
java
1 |
|
- java에서
MultiSet
은 표준 Collection 으로 제공하지 않습니다. Guava
같은 외부 라이브러리를 쓰는 수밖에 없습니다.
kotlin
1 |
|