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 | |