Set์ JCF(Java Collection Framework)์ ์ธํฐํ์ด์ค ์ค ํ๋๋ก ์ค๋ณต์ ํ์ฉํ์ง ์๊ณ ์ ์ฅ ์์๋ฅผ ๋ณด์ฅํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ๋น์ ํ ๊ตฌ์กฐ ์ธํฐํ์ด์ค์ด๊ณ , ๋ํ์ ์ธ ๊ตฌํ์ฒด๋ก TreeSet, HashSet, LinkedHashSet์ด ์์ต๋๋ค.

์ถ์ฒ: https://www.tpointtech.com/hash-table
HashSet์ด๋ ํด์ ํ
์ด๋ธ์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ตฌํ์ฒด๋ก Set์ ํน์ง์ ๊ฐ์ง๊ณ ์์ด ์ค๋ณต ๊ฐ์ ํ์ฉํ์ง ์๋ ํน์ง์ด ์์ต๋๋ค.
IntelliJ IDEA์์ HashSet ๊ตฌ์กฐ๋ฅผ ํ์ธํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ด๋ถ์ ์ผ๋ก HashMap์ ์ด์ฉํ์ฌ ๋์ํ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ์ฆ, HashSet์ ๋ฐ์ดํฐ๋ฅผ HashMap์ ํค(Key)๋ก ์ ์ฅํ๋ฉฐ, ๊ฐ(Value)๋ ๋ชจ๋ ๊ฐ์ ๋๋ฏธ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ณต๋ ํค(Key)๋ฅผ ํ์ฉํ์ง ์๋ Map์ ํน์ฑ์ ์ด์ฉํ์ฌ ์ค๋ณต์ ์ ๊ฑฐํฉ๋๋ค.

โ ๊ทธ๋ผ HashSet์ ์ด๋ค ์๋ฆฌ๋ก ์ค๋ณต์ ์ ๊ฑฐํ ๊น?
์๋ฐ์๋ ๊ฐ์ฒด๋ฅผ ์๋ณํ ์ ์๋ hashCode๊ฐ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๊ฐ ์คํ๋๋ฉด
set.add("apple");
๋ด๋ถ์ ์ผ๋ก๋ HashMap์ ์ด์ฉํ์ฌ ์๋์ ๊ฐ์ด ์คํ๋ฉ๋๋ค.
map.put("apple", PRESENT);
์ด ๋, HashMap์ apple ๊ฐ์ฒด์ hashCode()๋ฅผ ํธ์ถํ๊ณ ํด๋น ํด์๊ฐ์ ๊ธฐ๋ฐํ์ฌ ๋ฒํท ์์น๋ฅผ ๊ฒฐ์ ํ๊ณ ํด๋น ์์น์ ๋์ผํ ๊ฐ์ฒด(equals()๊ฐ true์ธ)๊ฐ ์๋ค๋ฉด ์ถ๊ฐํฉ๋๋ค.
โผ๏ธ hashCode()์ equals()๋ฅผ ์ ๋๋ก ๊ตฌํํ์ง ์์ผ๋ฉด ์ค๋ณต์ด ์ ๋๋ก ์ฒ๋ฆฌ๋์ง ์์ HashSet์ ์ค๋ณต ๋ฐฉ์ง ๊ธฐ๋ฅ์ด ๋ฌด์๋ฏธํด์ง ์ ์์ต๋๋ค.
์ด์ฒ๋ผ HashSet์ด ํจ์จ์ ์ผ๋ก ์ค๋ณต ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ ์ด์ ๋ hashCode()๋ฅผ ์ด์ฉํ์ฌ ํด์ ๊ธฐ๋ฐ ๊ฒ์์ ํ์ฌ ํ์ ๋ฒ์๋ฅผ ์ขํ๊ณ ๋์ผํ ํด์๊ฐ์ ๊ฐ์ง๋ ๊ฐ์ฒด๊ฐ ์๋ ๊ฒฝ์ฐequals()๋ก ์ ํํ ์ค๋ณต ์ฌ๋ถ๋ฅผ ํ์
ํ๊ธฐ ๋๋ฌธ์
๋๋ค.