"๊ธ์, ๋น์ ์ ํ๋ก์ธ์๋ ์ด๋ป์ต๋๊น?"
"๊ด์ฐฎ์์. ํ ์๊ฐ ๋์ ์ก์ฒด ์ง์์ ์์ ์์์ผ๋ ์ด์ ์๊ฒ์ด๋ ๋ค๋ฆ์์ด์!"
"์ข์. ๊ทธ๋ผ ๊ณ์ํ์."
"์ปฌ๋ ์ ์ค์ ."
์ํ์ ์ผ๋ก ๋งํ๋ฉด ์งํฉ์ ๊ณ ์ ํ ์์์ ๊ทธ๋ฃน์ ๋๋ค. ๋ฐ๋ผ์ ํ๋ก๊ทธ๋๋ฐ์์ ์ธํธ๋ ๊ณ ์ ํ ์์์ ๋ชจ์์ ๋๋ค. ์ฆ, ๋์ผํ ์์๋ฅผ ์ ์ฅํ ์ ์๋๋ก ํ๋ ๋ชจ์์ ๋๋ค.
"Ellie๊ฐ Set์ ์์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ณด์ฌ์คฌ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค."
" HashSet์ hashCode () ๋ฉ์๋ ์์ ๋ฐํ๋ ํด์ ๊ฐ์ ์ฌ์ฉํ์ฌ ๋ด๋ถ์ ์ผ๋ก ์์๋ฅผ ์ ์ฅํ๋ ์ปฌ๋ ์ ์ ๋๋ค ."
"๋จ์ํ๋ฅผ ์ํด HashSet<E>๋ HashSet์ ๊ฐ์ ํค๋ก ์ ์ฅํ๋ HashMap<E, Object> ๊ฐ์ฒด๋ฅผ ์ ์ฅํฉ๋๋ค."
"์!"
"ํด์ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด Set์์ ์์๋ฅผ ๋น ๋ฅด๊ฒ ๊ฒ์, ์ถ๊ฐ ๋ฐ ์ ๊ฑฐํ ์ ์์ต๋๋ค."
"ํ์ง๋ง ํด๋์ค์ ๊ฐ์ฒด๋ฅผ Set์ ์ถ๊ฐํ๊ณ ๊ฑฐ๊ธฐ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฐพ์ผ๋ ค๋ฉด ํด๋์ค๊ฐ hashCode & equals ๋ฉ์๋๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌํํด์ผ ํ๋ค๋ ์ ์ ๋ช ์ฌํ์ญ์์ค ."
"๋ ๋ฐฉ๋ฒ ๋ชจ๋ HashSet/HashMap ๋ด๋ถ์์ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค . "
" hashCode () ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ ๊ฒ์ ์์ด๋ฒ๋ฆฌ๋ฉด Set์์ ๊ฐ์ฒด๊ฐ ์๋๋ผ๋ ๊ฐ์ฒด๋ฅผ ์ฐพ์ ์ ์๋ ์ํ์ด ์์ต๋๋ค."
"๋ค, ๊ธฐ์ตํด์, ๊ธฐ์ตํด์. ๋น์ ์ด ์ ์ ์ด๊ฒ์ ๋ํด ๋งํ์์์. ๋ ๊ทธ๊ฒ์ ๋ํด ๋ค ๋ค์์ด์."
"์๊ฒ ์ต๋๋ค. ๊ทธ๋ผ ์ ์ฉํ ์ ๋ณด๋ฅผ ์ข ๋ ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค."
" ํด๋์ค์์ hashCode์ equals๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌํํ๊ณ Set์ ๊ฐ์ฒด๋ฅผ ํ๋ณตํ๊ฒ ์ ์ฅํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค ."
"ํ์ง๋ง ๊ฐ์ฒด ์ค ํ๋๋ฅผ ๋ณ๊ฒฝํ๋ฉด ํด์ ๋ฅผ ๊ณ์ฐํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ด๋ถ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ฉ๋๋ค . ๋ฐ๋ผ์ ๊ฐ์ฒด์ ํด์๊ฐ ๋ณ๊ฒฝ๋ฉ๋๋ค."
"๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๋น์ ์ด ์ธํธ์์ ๊ทธ๊ฒ์ ๊ฒ์ํ ๋ ์๋ง ๊ทธ๊ฒ์ ์ฐพ์ง ๋ชปํ ๊ฒ์ด๋ผ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค."
"์์ฐ! ์ด๋ป๊ฒ ์๋ํฉ๋๊น?"
"์ด๊ฒ์ ํด์๋ก ์์ ํ ๋ ์ ์๋ ค์ง ํจ์ ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก HashSet(๋ฐ HashMap) ๊ฒ์์ ๊ฐ์ฒด๊ฐ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ์๋ง ์ ๋๋ก ์๋ํ๋๋ก ๋ณด์ฅ๋ฉ๋๋ค . "
"์์ฐ! ๊ทธ๋ฆฌ๊ณ ์๋ฌด๋ ๊ทธ๊ฒ์ ๋ํด ์๋ฌด๊ฒ๋ํ์ง ์์ต๋๊น?"
"๋ค๋ค ๋ฌธ์ ๊ฐ ์๋ ์ฒํด์. ๊ทธ๋ฐ๋ฐ ์ด๊ฑด ์ธํฐ๋ทฐ์์ ์์ฃผ ๋์ค๋๊น ๊ธฐ์ตํด๋๋ ๊ฒ ์ข์์ง๋..."
"A LinkedHashSet ์ ํด๋น ์์๊ฐ ์ฐ๊ฒฐ๋ ๋ชฉ๋ก์๋ ์ ์ฅ๋๋ HashSet์ ๋๋ค. ์ผ๋ฐ HashSet๋ ์์์ ์์ ์ง์ ์ ์ง์ํ์ง ์์ต๋๋ค. ์ฒซ์งธ, ๋จ์ํ ๊ณต์์ ์ธ ์์ ์ด ์๋๋๋ค. ๋์งธ, ๋ด๋ถ ์์์กฐ์ฐจ ๋จ์ผ ์์๊ฐ ์ถ๊ฐ๋์์ต๋๋ค."
๊ทธ๋ฌ๋ LinkedHashSet ์์ ๋ฐ๋ณต์๋ฅผ ๊ฐ์ ธ์ LinkedHashSet ์ ์ถ๊ฐ๋ ์์๋๋ก ๋ชจ๋ ์์๋ฅผ โโํต๊ณผํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค . ์์ฃผ ๋ฐ์ํ์ง๋ ์์ง๋ง ๋๋๋ก ์ด๊ฒ์ ๋งค์ฐ ํ์ํฉ๋๋ค."
"๊ทธ๋ ๊ตฌ๋. ๋ง์ฝ์ ๊ฒฝ์ฐ๋ฅผ ๋๋นํด์ ์์ ์ด ์๋ ๊ฒ ์ข์. ๊ทธ๋ฐ ๊ฒฝ์ฐ๊ฐ ๊ทธ๋ฆฌ ๋๋ฌผ์ง ์์."
" TreeSet์ ๊ฐ์ ๋ฐ๋ผ ์ ๋ ฌ๋ ํธ๋ฆฌ ํํ๋ก ์์๋ฅผ ์ ์ฅํ๋ ์ปฌ๋ ์ ์ ๋๋ค. TreeSet <E> ์๋ ์ด๋ฌํ ๋ชจ๋ ๊ฐ์ ์ ์ฅํ๋ TreeMap <E, Object>๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด TreeMap์ ๊ท ํ ์กํ ๋นจ๊ฐ -๊ฒ์ ํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฅํฉ๋๋ค. ์์ . ๊ฒฐ๊ณผ์ ์ผ๋ก ๋งค์ฐ ๋น ๋ฅธ ์ถ๊ฐ, ์ ๊ฑฐ ๋ฐ ํฌํจ ์์ ์ ์ง์ํฉ๋๋ค."
"๋ค, ๊ธฐ์ต๋๋ค์. ์ต๊ทผ์ ์๋ ผํ์ด์. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ ์ด๋์ ์ฐ์ผ์ง๋ ์๊ฐํ์ด์."
"๊ทธ๋ฆฌ๊ณ Java์ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ์ปฌ๋ ์ ์ค ์ผ๋ถ๊ฐ ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ๋ฐํ์ก์ต๋๋ค."
"๋ค. ๊ทธ๋ฐ๋ฐ ๋ฉด์ ๊ด์ ์ข ์ข TreeSet ์ ๋ํด ๋ฌป์ต๋๋ค. ๊ทธ๋ค์ ๋ณดํต ๋น์ ์ ์์ด๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๋ค์ 'TreeSet์ด ์ด์ง ํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ์์๊ฐ ํ๋์ ๊ธด ๋ถ๊ธฐ๋ฅผ ํ์ฑํ ์ ์์ผ๋ฏ๋ก ๊ฒ์์ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค๊ณ ๋งํ ๊ฒ์ ๋๋ค. ยซTreeSet๊ณผ TreeMap์ด ๊ท ํ ์กํ ์ ํ ํธ๋ฆฌ ๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ์ด๋ฆฐ์์ด๋ ์๊ณ ์๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก๋ ๋ถ๊ฐ๋ฅํ ์ํฉ์ ๋๋ค.ยป
"์. ๊ทธ ์ง๋ฌธ์ ํ ์ฌ๋์ ์ผ๊ตด์ ๋ณด๊ณ ์ถ๋ค. ๊ทธ ๋ฌธ๊ตฌ๋ฅผ ์ธ์ธ ์๋ ์๋ค. โฆ"
"ํ์ง๋ง ์ค์ ๋ก ์ธํธ๋ ๋ด๊ฐ ์ฒ์์ ์๊ฐํ๋ ๊ฒ๋งํผ ๋จ์ํ์ง ์์ ๊ฒ์ผ๋ก ํ๋ช ๋์์ต๋๋ค."
"๋ฐ๋ฉด์ Queue ์ ์ํฉ์ ํจ์ฌ ๊ฐ๋จํฉ๋๋ค."
" Queue๋ queue๋ฅผ ๊ตฌํํฉ๋๋ค. ์์๋ queue์ ๋์ ์ถ๊ฐ๋๊ณ ์์ชฝ์์ ๊ฐ์ ธ์ต๋๋ค."
" ๊ธฐ์ ์ ์ผ๋ก ๋๊ธฐ์ด์ด๊ธฐ๋ ํ LinkedList ๋ฅผ ์ ์ธํ๊ณ PriorityQueue ๋ ์ค์ ๋ก Queue ์ธํฐํ์ด์ค ์ ์ ์ผํ ํด๋์ ๊ตฌํ์ ๋๋ค ."
"์์์ด, ํผ๊ณคํด. ์ค๋์ ์ฌ๊ธฐ๊น์ง์ผ. ๋ค์ ์๊ฐ๊น์ง."