- reference-1: https://github.com/MangKyu/stream-quiz
- reference-2: https://www.elancer.co.kr/blog/detail/255
- reference-3: https://inpa.tistory.com/entry/JCF-%F0%9F%A7%B1-Collections-Framework-%EC%A2%85%EB%A5%98-%EC%B4%9D%EC%A0%95%EB%A6%AC
- ์ผ๋ จ์ ๋ฐ์ดํฐ์ ํ๋ฆ์ ํ์คํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฝ๊ฒ ๊ฐ๊ณต, ์ฒ๋ฆฌํ ์ ์๋๋ก ๋์์ฃผ๋ ํด๋์ค
- ์์๋ค์ Stream์ ํจ์ํ ์ฐ์ฐ์ ์ง์ํ๋ ํด๋์ค
- Stream API๋ ์ด๋ฌํ ์์ ์ ๊ฐํธํ๊ฒ ์ํํ ์ ์๋๋ก ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ ๋ฟ๋ง ์๋๋ผ, ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ํตํด ์ฒ๋ฆฌ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค.
- ๋ฐ๋ผ์, Collection F/W๋ฅผ ํตํด ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฃผ๋ก ์ฌ์ฉํฉ๋๋ค.
- Stream API์ ๋ค์ํ ๊ธฐ๋ฅ๋ค์ ๋๋ถ๋ถ ๋๋ค๋ฅผ ํ์๋ก ํ๊ธฐ ๋๋ฌธ์ ๋๋ค๋ฅผ ์ดํดํ๊ณ ์ฌ์ฉํ ์ ์์ด์ผ ํฉ๋๋ค.
- ๊ฐ ์ฐ์ฐ์ ์ฐ๊ฒฐ์ ํตํด ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑํฉ๋๋ค.
- ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑํ ์ ์๋ค๋ ๊ฒ์ ์คํธ๋ฆผ ๋์ ๋ฐ์ดํฐ์ ๋ํ ๋ค์ํ ์ฐ์ฐ์ ์กฐํฉํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- ์คํธ๋ฆผ์ ์ด์ฉํ ์ฐ์ฐ ์ฒ๋ฆฌ๋ ์คํธ๋ฆผ ๊ฐ์ฒด์ ์์ฑ๋ถํฐ ์ค๊ฐ ์ฐ์ฐ, ๊ทธ๋ฆฌ๊ณ ์ต์ข ์ฐ์ฐ ๋จ๊ณ๋ก ๊ตฌ๋ถํฉ๋๋ค.
- ์คํธ๋ฆผ ๊ฐ์ฒด๊ฐ ์ ๊ณตํ๋ ๋ค์ํ ์ฐ์ฐ์ ์ดํดํ๊ณ ์ฐ์ฐ์ ํ์ํ ๋๋คํํ์์ ์ดํดํ๊ณ ์ ์ฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ๋ฐ์ดํฐ์ ์ปฌ๋ ์ (์งํฉ)์ Stream์ผ๋ก ๋ณํํ๋ ๊ณผ์ ์ ๋๋ค.
- Stream API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ์ต์ด 1๋ฒ ์ํ๋์ด์ผ ํ๋ฉฐ, ์์ฑ ๋จ๊ณ์์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ๊บผ๋ฒ์ ๋ถ๋ฌ์ค์ง ์๊ณ ํ์ํ ๋๋ง ๋ถ๋ฌ์ต๋๋ค.
- ์ด๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ต์ ํํ๊ณ ํจ์จ์ฑ์ด ์ฆ๋๋ฉ๋๋ค.
- ๊ฐ๊ณต(์ค๊ฐ์ฐ์ฐ): ์์ค์ ๋ฐ์ดํฐ ์งํฉ์ ์ํ๋ ํํ๋ก ๊ฐ๊ณตํ๋ ๊ฒ
- filter, map๊ณผ ๊ฐ์ ์ฐ์ฐ์ผ๋ก Stream์ ๋ฐํ
- ์ค๊ฐ ์ฐ์ฐ์ ์ฐ์์์ ํธ์ถํ๋ ๋ฉ์๋ ์ฒด์ด๋์ผ๋ก ๊ตฌํ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์ต์ข ์ฐ์ฐ์ด ์คํ๋์ด์ผ ์ค๊ฐ์ฐ์ฐ์ด ์ฒ๋ฆฌ๋๋ฏ๋ก ์ค๊ฐ์ฐ์ฐ๋ค๋ก๋ง ๊ตฌ์ฑ๋ ๋ฉ์๋ ์ฒด์ธ์ ์คํ๋์ง ์์ต๋๋ค. (Lazy Evaluation)
- Lazy Evaluation: ์ต์ข ์ฐ์ฐ์ ํธ์ถํ๊ธฐ ์ ๊น์ง ์ค๊ฐ ์ฐ์ฐ์ ์ง์ฐ์ํค๋ ํ์
- ์คํธ๋ฆผ ๋งคํ(map) ์ฐ์ฐ์ ์คํธ๋ฆผ์ด ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ํํ์ ๋ฐ์ดํฐ๋ก ๋ฐํํ ์ ์๋๋ก ํฉ๋๋ค.
- ๋งคํ ์ฐ์ฐ์ ๋ฉ์๋๋ map(), mapToInt(), mapToDouble(), mapToLong()์ด ์์ต๋๋ค.
- ์ฃผ๋ก ์ฌ์ฉํ๋ ๋ฉ์๋๋ map() ๋ฉ์๋์ด๋ฉฐ ํ๋ผ๋ฏธํฐ๋ Function ํจ์ํ ์ธํฐํ์ด์ค ์ ๋๋ค.
- double, int, long ๊ธฐ๋ณธํ ๋ฐ์ดํฐ ํ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ฉ์๋๋ค์ ๋งคํ๋ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๊ธฐ๋ณธํ ๋ฐ์ดํฐ ํ์ ์ผ ๊ฒฝ์ฐ ์ ์ฉํ์ฌ ์ฌ์ฉํฉ๋๋ค.
- filter: ํํฐ ์ฒ๋ฆฌ (์กฐ๊ฑด๋ฌธ์ ํตํ ๋ฐ์ดํฐ ์ ๋ณ)
- map: ๋ฐ์ดํฐ ๋ณํ
- sorted: ์ ๋ ฌ
- peek: ๊ฐ๊ณต๋ ๋ฐ์ดํฐ๋ฅผ ํ์ ํ๊ธฐ ์ํ ์ฉ๋
- disctinct: ์ค๋ณต ์ ๊ฑฐ
- limit: ๊ฐ์ ์ ํ
- ์ต์ข
์ฐ์ฐ: Stream์ ๋ํ ์ต์ข
์ฐ์ฐ์ ์ํํ๋ ๊ฒ. (์ต์ข
์ ์ธ ๋ชฉ์ ๋ฌผ์ ์ป๋ ์ฒ๋ฆฌ๊ณผ์ )
- forEach, collect์ ๊ฐ์ ์ฐ์ฐ์ผ๋ก void๋ฅผ ๋ฐํํ๊ฑฐ๋ ์ปฌ๋ ์ ํ์ ์ ๋ฐํ
- ์คํธ๋ฆผ์ด ๊ด๋ฆฌํ๋ ์ ์ฒด ๋ฐ์ดํฐ์ ๋ํ ์ํ ์์ ์ ์ต์ข ์ฐ์ฐ์ธ forEach() ๋ฉ์๋๋ฅผ ์ด์ฉํฉ๋๋ค.
- collect() ๋ฉ์๋๋ ์คํธ๋ฆผ ์ฒ๋ฆฌ ์ดํ ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ์ ๋ํด Collection ๊ฐ์ฒด๋ก ๋ฐํํ๋ ๋ฉ์๋ ์ ๋๋ค.
- ์คํธ๋ฆผ์ ์ต์ข ์ฐ์ฐ์ forEach()์ ๊ฐ์ ์คํธ๋ฆผ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ก ํ์ธํ ์ ์๋ ์ฐ์ฐ์ด ์๊ณ , ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์๋ชจํ ์ดํ์ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ ์ ์๋ count()์ ๊ฐ์ ์ฐ์ฐ์ด ์์ต๋๋ค.
- ์ด ์ธ์๋ ํน์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์๋ allMatch(), anyMatch() ๋ฑ๊ณผ ๊ฐ์ ๋ค์ํ ๋ฉ์๋๋ค์ ์ ๊ณตํฉ๋๋ค.
- forEach(): stream์ ๊ฐ ์์๋ฅผ ์ํํ๋ฉด์ ์ถ๋ ฅ ๋ฑ์ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉํฉ๋๋ค.
- reduce(): stream์ ์์๋ฅผ ์ค์ฌ๋๊ฐ๋ฉด์ ์ฐ์ฐ์ ์ํํฉ๋๋ค.
- findFirst(), findAny(): ํน์ ์กฐ๊ฑด์ ๋ง๋ ์์๋ฅผ ์ฐพ๊ธฐ ์ํด ์ฌ์ฉํฉ๋๋ค.
- anyMatch(), allMatch(), noneMatch(): ์กฐ๊ฑด์ ๋ง๋์ง ํ์ธ์ ์ํด ์ฌ์ฉํฉ๋๋ค.
- count(), min(), max(), sum(), average(): ์์์ ๊ฐ์, ์ต์(๋)๊ฐ, ํฉ๊ณ, ํ๊ท ์ ์ํด ์ฌ์ฉํฉ๋๋ค.
- collect(): stream์ ์์๋ฅผ ์์งํ์ฌ ์ํ๋ ํํ๋ก ๋ณํํ๊ธฐ ์ํด์ ์ฌ์ฉํฉ๋๋ค.
- toList(), toSet(), toCollection(), toArray(), toMap()
- ์ ์ธ์ ์ผ๋ก ์ฝ๋ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์ฐ์์ ์ผ๋ก ํํฐ๋ง, ๋งคํ, ์ ๋ ฌ์ ์ฒด์ด๋์ผ๋ก ํํํ ์ ์์ต๋๋ค.
- ๊ฐ๊ฒฐํ๊ณ ๋ช ํํ ์ฝ๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ด์ ์ฝ๋์ ์ ์ง๋ณด์์ฑ๊ณผ ๊ฐ๋ ์ฑ์ด ํฅ์๋ฉ๋๋ค.
- ๋ณ๋ ฌ์ฒ๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค. (๋ฉํฐ์ค๋ ๋๋ก ๋ณ๋ ฌ์ฒ๋ฆฌ ํ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ์ฒ๋ฆฌ) (parallel(), parallelStream())
- ์๋ฃ ๊ตฌ์กฐ(Data Structure) ์ข ๋ฅ์ ํํ๋ค์ ์๋ฐ ํด๋์ค๋ก ๊ตฌํํ ๋ชจ์์ง
- ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ์ ์ฒ๋ฆฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌ์กฐํํ์ฌ ํด๋์ค๋ก ๊ตฌํํด๋ ๊ฒ
- ์ธํฐํ์ด์ค์ ๋คํ์ฑ์ ์ด์ฉํ ๊ฐ์ฒด์งํฅ์ ์ค๊ณ๋ฅผ ํตํด ํ์คํ๋์ด ์์ต๋๋ค.
- ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ฐ ์๊ณ ๋ฆฌ์ฆ์ ๊ณ ์ฑ๋ฅ ๊ตฌํ์ ์ ๊ณตํฉ๋๋ค.
- ๊ด๋ จ ์๋ API ๊ฐ์ ์ํธ ์ด์ฉ์ฑ์ ์ ๊ณตํฉ๋๋ค.
- ์ด๋ฏธ ๊ตฌํ๋์ด ์๋ API๋ฅผ ์ฌ์ฉํ๋ฉด ๋๊ธฐ์, ์๋ก์ด API๋ฅผ ์ตํ๊ณ ์ค๊ณํ๋ ์๊ฐ์ด ์ค์ด๋ญ๋๋ค.
- ์ํํธ์จ์ด ์ฌ์ฌ์ฉ์ ์ด์งํฉ๋๋ค.
- Collection ์ธํฐํ์ด์ค
- List, Set, Queue ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด ์กด์ฌ
- Map ์ธํฐํ์ด์ค
- Collection๊ณผ๋ ๋ณ๊ฐ๋ก Map ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด ์กด์ฌ
- ์ปฌ๋ ์ ์ธํฐํ์ด์ค๋ค์ ๊ฐ์ฅ ์ต์์ ์ธํฐํ์ด์ค
- ์ปฌ๋ ์ ๋ค์ ๋ฐฐ์ฐ๋ค ๋ณด๋ฉด ์๋ฃ๋ค์ ์ํํ ๋ ์ดํฐ๋ ์ดํฐ ๊ฐ์ฒด๋ฅผ ๋ค๋ค๋ณด๊ฒ ๋๋๋ฐ, ์ดํฐ๋ ์ดํฐ ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ๋ ์ธํฐํ์ด์ค
| ๋ฉ์๋ | ์ค๋ช |
|---|---|
| default void forEach(Consumer<? super T> action) | ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์ ์ฉ ๋ฃจํ ๋ฉ์๋ |
| Iterator iterator() | ์ปฌ๋ ์ ์์ ์ดํฐ๋ ์ดํฐ ๊ตฌํ |
| default Spliterator splierator() | ํ์ดํ๋ผ์ด๋ ๊ด๋ จ ๋ฉ์๋ |
- List, Set, Queue๋ฅผ ์์ํ๋ ์์ ์ปฌ๋ ์ ํ์
- ์ ์บ์คํ ์ผ๋ก ๋ค์ํ ์ข ๋ฅ์ ์ปฌ๋ ์ ์๋ฃํ์ ๋ฐ์ ์๋ฃ๋ฅผ crudํ ์ ์์ต๋๋ค.
| ๋ฉ์๋ | ์ค๋ช |
|---|---|
| boolean add(Object o), boolean addAll(Collection c) | Collection์ ๊ฐ์ฒด ์ถ๊ฐ |
| boolean contains(Object o), boolean containsAll(Collection c) | Collection์ ๊ฐ์ฒด๋ค์ด ํฌํจ๋์ด์๋์ง check |
| boolean remove(Object o), boolean removeAll(Collction c) | Collection์์ ๊ฐ์ฒด ์ญ์ |
| boolean retainAll(Collection c) | Collection์ ์ง์ ํ ๊ฐ์ฒด๋ฅผ ์ ์ธํ ๋ชจ๋ ๊ฐ์ฒด ์ญ์ |
| void clear() | Collection์ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ์ญ์ |
| boolean equals(Object o) | ๋์ผํ Collection์ธ์ง ๋น๊ต |
| int hashCode() | Collection์ hash code๋ฅผ ๋ฐํ |
| boolean isEmpty() | Collection์ด ๋น์ด์๋์ง ํ์ธ |
| Iterator iterator() | Collection์ iterator๋ฅผ ์ป์ด์ ๋ฐํ |
| int size() | Collection์ ์ ์ฅ๋ ๊ฐ์ฒด์ ๊ฐ์๋ฅผ ๋ฐํ |
- ๋ฐฐ์ด์ ์ด์ฉํ์ฌ ๋ง๋ ๋ฆฌ์คํธ
- ๋ฐ์ดํฐ์ ์ ์ฅ์์๊ฐ ์ ์ง๋๊ณ ์ค๋ณต์ ํ์ฉ
- ๋ฐ์ดํฐ๋์ ๋ฐ๋ผ ๊ณต๊ฐ(capacity) ์๋ ์ค์
- ๋จ๋ฐฉํฅ ํฌ์ธํฐ ๊ตฌ์กฐ๋ก ์๋ฃ์ ๋ํ ์์ฐจ์ ์ธ ์ ๊ทผ์ ๊ฐ์ ์ด ์์ด ์กฐํ๊ฐ ๋น ๋ฆ
๋๋ค.
- ํ์ง๋ง, ์ฝ์ /์ญ์ ๋ ๋๋ฆฌ๋ฉฐ, ์์ฐจ์ ์ผ๋ก ์ถ๊ฐ/์ญ์ ํ๋ ๊ฒฝ์ฐ์๋ ๊ฐ์ฅ ๋น ๋ฆ ๋๋ค.
- ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ์ฌ ๋ฆฌ์คํธ์ฒ๋ผ ๋ง๋ ์ปฌ๋ ์ (๋ฐฐ์ด X)
- ๋ฐ์ดํฐ์ ์ค๊ฐ ์ฝ์ , ์ญ์ ๊ฐ ๋น๋ฒํ ๊ฒฝ์ฐ ๋น ๋ฅธ ์ฑ๋ฅ์ ๋ณด์ฅํฉ๋๋ค.
- ์์ ์์์ ๋ํ ์กฐํ ์ฑ๋ฅ์ ์ข์ง ์์ต๋๋ค.
- ์๋ฐ์ LinkedList๋ ์๋ฐฉํฅ ํฌ์ธํฐ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ง๋๋ค.
- LinkedList๋ ๋ฆฌ์คํธ ์ฉ๋ ์ด์ธ์๋ ์คํ, ํ, ํธ๋ฆฌ ๋ฑ์ ์๋ฃ๊ตฌ์กฐ์ ๊ทผ๊ฐ์ด ๋ฉ๋๋ค.
- FIFO(First-In-First-out) ๊ตฌ์กฐ
- ์ฒ์ ๋ค์ด์จ ์์๊ฐ ๊ฐ์ฅ ๋จผ์ ๋๊ฐ๋๋ค.
- ์๋ฐ์์ Queue๋ ์ธํฐํ์ด์ค๊ณ , ํ์์ ๋ฐ๋ผ ํ ์ปฌ๋ ์ ์ ๊ณจ๋ผ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
| ๋ฉ์๋ | ์ค๋ช |
|---|---|
| boolean add(Object o) | Queue์ ๊ฐ์ฒด ์ถ๊ฐ (์ ์ฅ๊ณต๊ฐ ๋ถ์กฑ์, IllegalStateException ๋ฐ์) |
| Object remove() | Queue์์ ๊ฐ์ฒด ๋ฐํ (์์ ๊ฒฝ์ฐ, NoSuchElementException ๋ฐ์) |
| Object element() | ์ญ์ ์์ด ์์๋ฅผ ์ฝ์ด์ต๋๋ค.(์์ ๊ฒฝ์ฐ, NoSuchElementException) |
| boolean offer() | Queue์ ๊ฐ์ฒด๋ฅผ ์ ์ฅ |
| Object poll() | Queue์์ ๊ฐ์ฒด๋ฅผ ๊บผ๋ด์ ๋ฐํ (์์ ๊ฒฝ์ฐ null ๋ฐํ) |
| Object peek() | Queue์์ ์ญ์ ์์ด ์์๋ฅผ ์ฝ์ด์ต๋๋ค. (์์ ๊ฒฝ์ฐ null ๋ฐํ) |
- ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉํ์ง ์๊ณ ์์๋ฅผ ์ ์งํ์ง ์๋ ๋ฐ์ดํฐ์ ์งํฉ ๋ฆฌ์คํธ
- ์์ ์์ฒด๊ฐ ์์ผ๋ฏ๋ก ์ธ๋ฑ์ค๋ก ๊ฐ์ฒด๋ฅผ ๊ฒ์ํด์ ๊ฐ์ ธ์ค๋ get(index) ๋ฉ์๋๋ ์กด์ฌํ์ง ์์ต๋๋ค.
- ์ค๋ณต ์ ์ฅ์ด ๋ถ๊ฐ๋ฅํ๊ธฐ์ ์ฌ์ง์ด null๋ ํ๋๋ง ์ ์ฅํ ์ ์์ต๋๋ค.
| ๋ฉ์๋ | ์ค๋ช |
|---|---|
| boolean add(E e) | ์ฃผ์ด์ง ๊ฐ์ฒด๋ฅผ ์ ์ฅ ํ true, false ๋ฆฌํด |
| boolean contains(Object o) | ์ฃผ์ด์ง ๊ฐ์ฒด๊ฐ ์ ์ฅ๋์๋์ง์ ์ฌ๋ถ๋ฅผ ๋ฆฌํด |
| Iterator iterator() | ์ ์ฅ๋ ๊ฐ์ฒด๋ฅผ ํ๋ฒ์ฉ ๊ฐ์ ธ์ค๋ ๋ฐ๋ณต์๋ฅผ ๋ฆฌํด |
| isEmpty() | ์ปฌ๋ ์ ์ด ๋น์๋์ง ์ฌ๋ถ๋ฅผ ๊ฒ์ฌ |
| int Size() | ์ ์ฅ๋์ด ์๋ ์ ์ฒด ๊ฐ์ฒด ์๋ฅผ ๋ฆฌํด |
| void clear() | ์ ์ฅ๋ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ์ญ์ |
| boolean remove(Object o) | ์ฃผ์ด์ง ๊ฐ์ฒด๋ฅผ ์ญ์ |
- ๋ฐฐ์ด๊ณผ ์ฐ๊ฒฐ๋ ธ๋๋ฅผ ๊ฒฐํฉํ ์๋ฃ๊ตฌ์กฐ ํํ
- ๊ฐ์ฅ ๋น ๋ฅธ ์์ ๊ฒ์ ์ ๊ทผ ์๋๋ฅผ ๋ณด์ฅํฉ๋๋ค.
- ์ถ๊ฐ, ์ญ์ , ๊ฒ์, ์ ๊ทผ์ฑ์ด ๋ชจ๋ ๋ฐ์ด๋ฉ๋๋ค.
- ๋์ ์์๋ฅผ ์ ํ ์์ธกํ ์ ์์ต๋๋ค.
- ์์๋ฅผ ๊ฐ์ง๋ Set ์๋ฃ๊ตฌ์กฐ
- ์ถ๊ฐ๋ ์์ ๋๋ ๊ฐ์ฅ ์ต๊ทผ์ ์ ๊ทผํ ์์๋๋ก ์ ๊ทผ ๊ฐ๋ฅ
- ๋ง์ผ ์ค๋ณต์ ์ ๊ฑฐํ๋ ๋์์ ์ ์ฅํ ์์๋ฅผ ์ ์งํ๊ณ ์ถ๋ค๋ฉด, HashSet ๋์ LinkedHashSet์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
- ์ด์ง ๊ฒ์ ํธ๋ฆฌ (binary search tree) ์๋ฃ๊ตฌ์กฐ ํํ๋ก ๋ฐ์ดํฐ ์ ์ฅ
- ์ค๋ณต์ ํ์ฉํ์ง ์๊ณ , ์์๋ฅผ ๊ฐ์ง์ง ์์ต๋๋ค.
- ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ์ฌ ์ ์ฅํ๊ณ ์๋ค๋ ํน์ง์ด ์์ต๋๋ค.
- ์ ๋ ฌ, ๊ฒ์, ๋ฒ์ ๊ฒ์์ ๋์ ์ฑ๋ฅ์ ๊ฐ์ง๋๋ค.
- key์ value ์์ผ๋ก ์ฐ๊ด์ง์ด ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ์ ์งํฉ
- value๋ ์ค๋ณตํด์ ์ ์ฅ๋ ์ ์์ง๋ง, key๋ ๊ณ ์ ํ ๊ฐ์ด์ฌ์ผ ํฉ๋๋ค.
- ๊ธฐ์กด์ ๋ฐ์ดํฐ์ ์ค๋ณต๋ ํค์ ๊ฐ์ ์ ์ฅํ๋ฉด ๊ธฐ์กด์ ๊ฐ์ ์์ด์ง๊ณ , ๋ง์ง๋ง์ ์ ์ฅ๋ ๊ฐ๋ง ๋จ๊ฒ ๋ฉ๋๋ค.
- ์ ์ฅ ์์๊ฐ ์ ์ง๋์ง ์์ต๋๋ค.
| ์ถ์ ๋ฉ์๋ | ์ค๋ช |
|---|---|
| void clear() | Map์ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ์ญ์ |
| boolean containsKey() | ์ง์ ๋ key ๊ฐ์ฒด์ ์ผ์นํ๋ ๊ฐ์ฒด๊ฐ ์๋์ง ํ์ธ |
| boolean containsValue() | ์ง์ ๋ value ๊ฐ์ฒด์ ์ผ์นํ๋ ๊ฐ์ฒด๊ฐ ์๋์ง ํ์ธ |
| Set entySet() | Map์ ์ ์ฅ๋ key-value ์์ Map.Entry ํ์ ์ ๊ฐ์ฒด๋ก ์ ์ฅํ Set์ ๋ฐํ |
| boolean equals() | ๋์ผํ Map์ธ์ง๋ฅผ ๋น๊ต |
| Object get() | ์ง์ ํ key ๊ฐ์ฒด์ ๋์ํ๋ value ๊ฐ์ฒด๋ฅผ ๋ฐํ |
| int hashCode() | ํด์ ์ฝ๋๋ฅผ ๋ฐํ |
| boolean isEmpty() | Map์ด ๋น์ด์๋์ง ํ์ธ |
| Set keySet() | Map์ ์ ์ฅ๋ ๋ชจ๋ key ๊ฐ์ฒด๋ฅผ ๋ฐํ |
| Object put() | Map์ ์ ์ฅ๋ key ๊ฐ์ฒด์ value ๊ฐ์ฒด๋ฅผ ์ฐ๊ฒฐํ์ฌ ์ ์ฅ |
| putAll(Map t) | ์ง์ ๋ key ๊ฐ์ฒด์ ์ผ์นํ๋ key-value ์์ ์ถ๊ฐ |
| remove() | ์ง์ ๋ key ๊ฐ์ฒด์ ์ผ์นํ๋ key-value ๊ฐ์ฒด๋ฅผ ์ญ์ |
| int size() | Map์ ์ ์ฅ๋ key-value ์์ ๊ฐ์๋ฅผ ๋ฐํ |
- Map.Entry ์ธํฐํ์ด์ค๋ Map ์ธํฐํ์ด์ค ์์ ์๋ ๋ด๋ถ ์ธํฐํ์ด์ค์ ๋๋ค.
- Map์ ์ ์ฅ๋๋ key-value ์์ Node ๋ด๋ถ ํด๋์ค๊ฐ ์ด๋ฅผ ๊ตฌํํ๊ณ ์์ต๋๋ค.
- HashTable์ ๋ณด์ํ ์ปฌ๋ ์
- ๋ฐฐ์ด๊ณผ ์ฐ๊ฒฐ์ด ๊ฒฐํฉ๋ Hashing ํํ๋ก, key, value๋ฅผ ๋ฌถ์ด ํ๋์ ๋ฐ์ดํฐ๋ก ์ ์ฅํฉ๋๋ค.
- ์ค๋ณต์ ํ์ฉํ์ง ์๊ณ ์์๋ฅผ ๋ณด์ฅํ์ง ์์ต๋๋ค.
- key, value ๊ฐ์ผ๋ก null์ ํ์ฉํฉ๋๋ค.
- ์ถ๊ฐ, ์ญ์ , ๊ฒ์, ์ ๊ทผ์ฑ์ด ๋ชจ๋ ๋ฐ์ด๋ฉ๋๋ค.
- ๋น๋๊ธฐ๋ก ์๋ํ๊ธฐ ๋๋ฌธ์ ๋ฉํฐ์ฐ๋ ๋ํ๊ฒฝ์์๋ ์ด์ธ๋ฆฌ์ง ์์ต๋๋ค.
- HashMap์ ์์ํ๊ณ , Entry๋ค์ด ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ๊ตฌ์ฑํ์ฌ ๋ฐ์ดํฐ์ ์์๋ฅผ ๋ณด์ฅํฉ๋๋ค.
- ์ผ๋ฐ์ ์ธ Map ์๋ฃ๊ตฌ์กฐ๋ ์์๋ฅผ ๊ฐ์ง์ง ์์ง๋ง, LinkedHashMap์ ๋ค์ด์จ ์์๋๋ก ์์๋ฅผ ๊ฐ์ง๋๋ค.
- ์ด์ง ๊ฒ์ ํธ๋ฆฌ์ ํํ๋ก ํค์ ๊ฐ์ ์์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ (TreeSet๊ณผ ๋์ผํ ์๋ฆฌ)
- TreeMap์ SortedMap ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด๋ก์, Key๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋๋ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- ์ ๋ ฌ๋ ์์๋ก key/value ๊ฐ์ ์ ์ฅํ๋ฏ๋ก ์กฐํ ์ฑ๋ฅ์ด ๋ฐ์ด๋์ง๋ง, ์ ์ฅ๊ณผ ๋์์ ์ ๋ ฌ ๊ณผ์ ์ด ์ผ์ด๋๋ฏ๋ก ์ ์ฅ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฝ๋๋ค.
- ์๋ฐ ์ด๊ธฐ๋ฒ์ ์ ๋์จ ํด๋์ค
- Key๋ฅผ ํน์ ํด์ ํจ์๋ฅผ ํตํด ํด์ฑํ ํ ๋์จ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ก ์ฌ์ฉํ์ฌ Value๋ฅผ ์ฐพ๋ ๋ฐฉ์์ผ๋ก ๋์๋ฉ๋๋ค.
- HashMap๋ณด๋ค๋ ๋๋ฆฌ์ง๋ง ๋๊ธฐํ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์๋ฉ๋๋ค.
- ํค์ ๊ฐ์ผ๋ก null์ด ํ์ฉ
Key์ ์กด์ฌ ์ ๋ฌด์ ์๊ด์์ด ๋๋ค์์ ์ํ
- Key์ ๊ฐ์ด ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ โ null
- Key์ ๊ฐ์ด ์กด์ฌ + ๋๋ค์์ ๊ฒฐ๊ณผ๊ฐ null โ ํด๋น Key๋ฅผ ์ญ์
- Key์ ๊ฐ์ด ์กด์ฌ + ๋๋ค์์ ๊ฒฐ๊ณผ๊ฐ null์ด ์๋ ๊ฒฝ์ฐ โ oldValue๋ฅผ Key๋ก ๋งคํ ๋ฐ ๋ฐํ
Key๊ฐ ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ, compute()๋ฅผ ์คํํ๋ ๋ฉ์๋
- ํจ์ํ ์ธํฐํ์ด์ค์ด๊ธฐ ๋๋ฌธ์ (key) โ {} ๋ฐฉ์์ผ๋ก ์์ฑํด์ผ ํฉ๋๋ค.
- Key ๊ฐ ์กด์ฌ โ ๋๋ค์ ์คํ X, ํด๋น Key์ ๋งคํ๋ ๊ฐ์ ๋ฐํํฉ๋๋ค.
- Key ๊ฐ ์กด์ฌ X โ ๋๋ค์ ์คํ O, ๋๋ค์ ์ํ ๊ฐ์ Key์ ๋งคํํ๊ณ ๋ฐํํฉ๋๋ค.
computeIfAbsent()์ ๋ณ์๋ฒ์ ์ ๋๋ค.
- key์ ๊ฐ ์กด์ฌ โ ํด๋น key์ ์กด์ฌํ๋ ๊ธฐ์กด ๊ฐ์ ๋ฐํ
- key์ ๊ฐ ๋ฏธ์กด์ฌ โ value๋ฅผ key์ ๋งคํํฉ๋๋ค. ๋ฐํ๊ฐ null
key๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ์๋ง ๋๋ค์์ ์ํํฉ๋๋ค. (computeIfAbsent์ ๋ฐ๋๋๋ ๋์)
(key, value) โ {} ์์ ์ฝ๋๋ก ์์ฑํฉ๋๋ค. (computeIfAbsent: (key) โ {})
- key์ ๊ฐ์ด ์กด์ฌ โ ๋๋ค์์ ์ํํ๋ฉฐ, ๋๋ค์ ์ํ ๊ฐ์ key์ ๋งคํํ๊ณ ๋ฐํํฉ๋๋ค.
- key์ ๊ฐ์ด ์กด์ฌ X โ ๋๋ค์ ์ํ X, Null ๋ฐํ