HashSet, TreeSet, LinkedHashSet - her0807/java-baseball-precourse GitHub Wiki
์ซ์ ์ค๋ณต์ ์ฒดํฌํ๋ฉฐ ๋ฐ๊ฒฌํ ์ค๋ฅ
์ซ์ ์ค๋ณต ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ๊ตฌํํ ๊น ๊ณ ๋ฏผํ๋ค๊ฐ ์ค๋ณต์ ํ์ฉํ์ง ์๋ ์๋ฃํ์ธ Set ์ด ๋ ์ฌ๋๋ค.
์ ๋ ฌ์ ํ์ง ์์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ HashSet์ ์ ํํ๊ณ ๊ตฌํํ๋ค.
ํ ์คํธ๋ก 123, 456 489 ๋ฑ์ ๋ฃ์๋ค. ๊ฒฐ๊ณผ ๊ฐ์ด ์ ๋์๋ค.
๋ค์์ผ๋ก 986์ ๋ฃ์๋๋ 689๋ก ์ถ๋ ฅ๋์๋ค ๋ญ์ง? ํ๊ณ ์ฐพ์๋ณด๋ HashSet์ ์์๋ฅผ ๋ณด์ฅํ์ง ์๋๋ค๋ ๋จ์ ์ ๋ฐ๊ฒฌํ๋ค.
์ด ๋ถ๋ถ์ LinkedHashSet๋ก ํด๊ฒฐํ๋ค. ์ด ์ฐธ์ Set์ ๋ํด ๊น๊ฒ ์์๋ณด์.
HashSet์ ์ ์์๋ฅผ ๋ณด์ฅํ์ง ์์๊น?
๋ด๋ถ๋ฅผ ์ดํด๋ณด๋ ๋ด๋ถ๊ฐ HashMap ์ผ๋ก ๊ตฌํ ๋์ด ์๋ค. ์์์ ์ธ๊ธํ๋ฏ HashMap, HashSet ์ ์์๋ฅผ ๋ณด์ฅํ์ง ์๋๋ค๋ ํน์ง์ด ์๋ค.
๊ทธ๋ผ ๋๋ค์ผ๋ก ๊ฒฐ๊ณผ๊ฐ ๋์ค๋???
์ง์ ์ฐ์ด๋ณด๋ ๋งค๋ฒ ๋๊ฐ์ด 689 ๋ก ๋์๋ค. ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ์๋์ ๊ฐ์ด ์๋ฌธ์ด ์๊ฒผ๋ค.
- ์ ์ ๋ ฌ๋ ์ํ๋ก ๋์ค์ง?
- ์
๋๋ค์ด ์๋๋ผ ๊ณ์ ์ผ์ ํ ๊ฐ์ด ๋์ค์ง?
hashMap์ Key๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ key ๊ฐ์ด ๊ณ ์ ํด์ผํ๋๊น
hashCode ๊ฐ์ด ์์ ๊ฐ ์์๋ก ์ ์ฅํด์ ๊ฒฐ๊ณผ ๊ฐ์ด ์ด๋ ๊ฒ ๋์ค๋??? ์ ์ถํด๋ดค๋ค.
HashCode ์ถ๋ ฅ
์ ์ถ๊ฐ ํ๋ ธ๋ค.. 11์ ํด์์ฝ๋๊ฐ ์ ์ผ ํฐ๋ฐ ์ฒซ๋ฒ์งธ๋ก ์ ์ฅ๋์ด ์ถ๋ ฅ๋์๋ค. ๋ฌด์จ ๋ฌธ์ ์ธ๊ฑธ๊น ๋ ๊น๊ฒ ๋ค์ด๊ฐ๋ณธ๋ค.
HashMap ๋ด๋ถ ๊ตฌ์กฐ๋ ๋ฐฐ์ด์ด์๋ค.
์ฐ์ฐ ์๊ฐ์ O(1) ์ผ๋ก ๋ณด์ฅํ๊ธฐ ์ํด์ ๋ฐฐ์ด์ ์ธ๋ฑ์ค์ ๋ฐ๋ก ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ด ๊ตฌํ๋์ด ์์๋ค.
๋ฐฐ์ด์ ์ด๊ธฐ ํฌ๊ธฐ๋ 16์ด๋ผ๊ณ ํ๋ค. ์ด์ ์ฌ๊ธฐ์ ํด์ฑ ๋ฐฉ๋ฒ์ ๋ํด ๋ ์ฌ๋ ค๋ณธ๋ค..
๋ด๋ถ ๋ฉ์๋ ๋ก์ง์ ๋ณด์
add -> put -> hash ๊น์ง ๊ฐ๋ 16์ผ๋ก ๊ณ์ฐ์ ํ๋ ๊ฒ์ ๋ฐ๊ฒฌํ๋ค.
HashTable ์ ์ฌ ๋ฐฉ๋ฒ์ ํด์์ฝ๋ % ํ ์ด๋ธ ํฌ๊ธฐ = ๋๋จธ์ง๋ฅผ ์ธ๋ฑ์ค ์ฃผ์๋ก ํ์ฉํ๋ ๊ฒ์ด๋ค.
ํ์ฌ ๋ฐฐ์ด์ ์ด๊ธฐ ํฌ๊ธฐ๋ 16์ด๋๊น ๋๋ ์ ๋๋จธ์ง๋ฅผ ์ค์ ์ธ๋ฑ์ค๋ ๋น๊ตํด๋ณด์.
์์์ ์ธ๋ฑ์ฑ ๋ฒํธ๊ฐ ์ผ์นํ๋ค.. !! ์ด๊ฑฐ์์ด ใ ใ ใ ใ ใ ใ ์ฐพ์๋ค ์ฐพ์์ด...
์ ์ ๋ ฅํ ์์๋๋ก ์ ์ฅ์ด ์๋๋์ง ํ์ ํ๋ค. ์ด์ ์์๋๋ก ์ ์ฅํด๋ณด์!!!
ํด๊ฒฐ ๋ฐฉ๋ฒ(HashSet -> LinkedHashSet)
์์ ์ ์ ๊ทธ๋๋ก LinkedHashSet ์ผ๋ก ๋ณ๊ฒฝํด์ ์ฌ์ฉํด์ฃผ๋ฉด ๋๋ค.
์๋ํ๋ฉด LinkedList๋ ๋ ธ๋๋ฅผ ์ด์ค์ผ๋ก ์ฐ๊ฒฐํด ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์์๊ฐ ๋ณด์ฅ๋๋ค.
๋๋์
๊น๊ฒ ํ๊ณ ๋ค๋ค๋ณด๋ ์๊ฐ์ด ํ์ฉ ์ง๋ฌ๋ค. ์๋ฃ๊ตฌ์กฐ ์ฌ์ฉ์ ์ํ ๋ฉ์๋๊ฐ ์ด๋ค ๊ฒ์ด ์๋์ง๋ ์์์ง๋ง,
๋ด๋ถ ๋์์ ๋ํด์๋ ์ ๋ชฐ๋๋ค. ์์ผ๋ก ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ ๋ ๋ด๋ถ๋ฅผ ์ดํด๋ณด๊ณ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ ์ฌ์ฉํ๋๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค.
ps. ๊ธ์ฐ๋ ๋ฐฉ๋ฒ์ ์ตํ๋ ์ค์ด๋ผ ๊ธ ์ ๋ฆฌ๊ฐ ์ ์๋์ด ์์ต๋๋ค. (ํผ๋๋ฐฑ์ ์ธ์ ๋ ํ์์
๋๋ค!)