LinkedHashSet
LinkedHashSet<E>
Set<E> ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ตฌํ ํด๋์ค์ด๋ค. (HashSet์ ์์ ํด๋์ค, HashSet์ ๋ชจ๋ ๊ธฐ๋ฅ ์ฌ์ฉ ๊ฐ๋ฅ)
์ ๋ ฅ ์์์ ์ถ๋ ฅ ์์๋ ๋์ผํ๋ค. (๋จ, ์ค๋ณต์ ํ์ฉํ์ง ์๋๋ค.)
// x
Set<E> set = new LinkedHashSet<>();
// o
HashSet<E> set = new LinkedHashSet<>();์ด๋ป๊ฒ ์์๋ฅผ ์ ์งํ ๊น?
์๋ ๋ด์ฉ์ ์ ๋ถ ํด๋น ๋งํฌ์ ๋ด์ฉ์ ๋ณต์ฌํ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์์ ์ ๊ธฐํ HashSet ์ ์์ ๋ฐ๋๋ก ๋์ด ์๊ณ , ๋ชจ๋ ์์ฑ์์๋ ๋ณ๋์ ์ธ์คํด์ค๋ฅผ ๋ง๋๋ ๊ฒ์ด ์๋๋ผ ๋ถ๋ชจ(super()) ์์ฑ์๋ฅผ ์ด๊ธฐํํ๋ ๋ฐฉ์์ผ๋ก ๋์ด ์๋ค.* ์ด 4๊ฐ์ ์์ฑ์*๋ฅผ ๊ฐ์ง๊ณ ์๋๋ฐ ๋ชจ๋ ์๋์ ๊ฐ๋ค.
์์ฑ์๋ฅผ ๋ณด๋ฉด ์๊ฒ ์ง๋ง, ๋ชจ๋ ๋ถ๋ชจ ์์ฑ์๋ฅผ ํธ์ถํ๊ณ ์๋ค. ์ฆ, HashSet์ ์์ฑ์๋ฅผ ํธ์ถํ๊ณ ์๋ ๊ฒ์ด๋ค. ํนํ, HashSet์ ์์ฑ์์ค 5๋ฒ์งธ ํจํค์ง๋ด์์๋ง ํธ์ถํ ์ ์๋ ์์ฑ์๋ฅผ ํธ์ถํ๊ณ ์๋ค.
*์ฆ, LinkedHashSet์ ๋ถ๋ชจ์ธ HashSet์ ๋ง๋ค๊ณ ๊ทธ๋ฆฌ๊ณ ๋ด๋ถ์ ์ผ๋ก LinkedHashMap์ ๋ง๋ค๊ณ ์๋ค. *
HashSet์ ๊ตฌํ๊ณผ๋ ๋ค๋ฅธ๋ฐ,** ์ด์ค ๋งํฌ๋๋ฆฌ์คํธ(Double Linked List)๋ฅผ ์ ์ง**ํ๋ค. ์ด ๋งํฌ๋๋ฆฌ์คํธ๋ Iteration์ ์์๋ฅผ ์ ํ๋๋ฐ, Iteration์ ์์๋ LinkedHashSet์ ์ฝ์ ๋ ์์์ด๋ค. ๋ง์ฝ ํ๋์ element๊ฐ ์ฌ ์ฝ์ ๋๋๋ผ๋ ์ํฅ์ ๋ฐ์ง ์๋๋ค. ํ๋์ element ๊ฐ ์ฌ์ฝ์ ๋๋ค๋ฉด s.add(e) ์ด๋ฐ์์ผ๋ก ํธ์ถ์ด ๋๋๋ฐ, s.contains(e)๊ฐ true๋ฅผ ๋ฆฌํดํ๋๋ก ๋์ด ์๋ค. **HashSet๊ณผ์ ์ฐจ์ด์ ** ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ ์ ๋ ฅํ ์์๋๋ก ๋์จ๋ค๋ ์ ์ด๋ค.
3์ ๋์ค์ ๋ฃ์๋๋ฐ ์์์ ์ธ๊ธํ๋๋ก ์ค๋ณต๋๋ ๊ฒ์ ์ฝ์ ์ด ๋์ง ์๋๋ค. ๊ทธ๋ฆฌ๊ณ 311์ ๋ฃ์์๋ ์ ๋ ฌ๋์ง ์์์ฑ ์ ์ผ ๋ง์ง๋ง์ ์ฝ์ ํ๊ธฐ ๋๋ฌธ์ ์ ์ผ ๋ค์ ์๋๊ฒ์ ํ์ธ ํ ์๊ฐ ์๋ค. ์ฌ ์ฝ์ ๋๋ ๊ฒฝ์ฐ, ๋ด๋ถ ์ฝ๋๊ฐ ์ด๋ป๊ฒ ๋์๊ฐ๋์ง ๋ณด์. s.ad(e)๋ฅผ ํธ์ถํ๊ฒ ๋๋ฉด ๋ถ๋ชจ์ธ HashSet์ add()๊ฐ ํธ์ถ๋๊ณ ๋ด๋ถ์ ์ผ๋ก LinkedHashMap์ ๊ฑฐ์ ธ์ HashMap์ put() ํจ์๋ก ์ฐ๊ฒฐ๋๋ ๊ฒ์ ๋ณผ์๊ฐ ์๋ค.(GrepCode) ์ฆ, HashMap์ put() ํจ์๋ฅผ ํตํด์ element๊ฐ ์ฝ์ ๋๊ธฐ ๋๋ฌธ์ ์์ฐ์ค๋ฝ๊ฒ ์ค๋ณต์ ๊ฑฐ๊ฐ ๋๋ค.
์ ๋ ฌ
HashSet์ CHOATIC Ordering ํด๊ฒฐ๋ฒ ์์์ ๋ณธ๊ฒ ์ฒ๋ผ HashSet์ ์ด์ํ ์ ๋ ฌ์ ๊ฐ์ง๋ค. ์ด๊ฒ์ ์๋ฐ ๊ณต์ ๋ฌธ์์์๋ Choatic ordering ์ด๋ผ๊ณ ๋งํ๊ณ ์์ ์ ๋์ธ๋ฐ, HashSet์ ์ ๋ ฌ์ด ์ดํดํ ์๊ฐ ์๊ณ , LinkedHashSet์ ์ ๋ ฅํ ์์๋๋ก ๋ค์ด๊ฐ๋ค. ๊ทธ๋ฌ๋ ์ ๋ ฌ์ ํด์ผํ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ๊ธฐ ๋๋ฌธ์ ์ ๋ ฌ์ ํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด** TreeSet์ ์จ์ ์ด์ Set์ copyํ๋ ๋์์ ์ ๋ ฌํ๋ฉด ๋๋ค. **
์ฑ๋ฅ๋ฌธ์
** ์ฑ๋ฅ์ HashSet ๋ณด๋ค ์ฝ๊ฐ ๋จ์ด์ง ์ ์๋๋ฐ ๋งํฌ๋๋ฆฌ์คํธ๋ฅผ ์ ์งํ๋๋ฐ ๋น์ฉ์ด ๋ ๋ค๊ณ ํ๋ค. ํ๊ฐ์ง ์์ธ๋ก๋ LinkedHashSet์ Iteration ์ capacity(capacity ์ size ๋ ๋ค๋ฅด๋ค. HashMap ์ ๋ฆฌ ์ฐธ๊ณ )์ ์๊ด์์ด Set์ ์ฌ์ด์ฆ์ ๋น๋กํ๋ ์๊ฐ์ด ํ์ํ๋ค๊ณ ํ๋ค. ** LinkedHashSet์ ๋๊ฐ์ง ์์์ ๋ํด์ ์ฑ๋ฅ์ ์ํฅ์ ๋ฐ๋๋ค initial capacity์ load factor ์ธ๋ฐ ์ด๊ฒ๋ค์ด ์ฑ๋ฅ์ ์ํฅ์ ์ฃผ๋ ์ด์ ๋ ๋ด๋ถ์ ์ผ๋ก HashMap์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ฃผ์ํ ์ ์ Iteration ์ capacity์ ์ํฅ์ ๋ฐ๋๊ฒ์ด ์๋๋ผ๋ ์ ์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋์ initial capacity๋ฅผ ์ค ํ์๋ ์๋ค. **๋๊ธฐํ ** ๋๊ธฐํ๋ LinkedHashSet์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด synchronizedSet() ํจ์๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.
Last updated