1. TreeSet
์ด์ง ๊ฒ์ ํธ๋ฆฌ(Binary Search Tree) ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ปฌ๋ ์ ํด๋์ค. ์ ๋ ฌ, ๊ฒ์/๋ฒ์๊ฒ์์ ๋์ ์ฑ๋ฅ์ ๋ณด์ด๋ฉฐ ์ด์ง ๊ฒ์ ํธ๋ฆฌ์ ์ฑ๋ฅ์ ํฅ์์ํจ Red-Black tree ํํ๋ก ๊ตฌํ๋์ด ์์ต๋๋ค. Set ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉํ์ง ์์ผ๋ฉฐ ์ ๋ ฌ๋ ์์น์ ์ ์ฅํ๋ฏ๋ก ์ ์ฅ์์๋ฅผ ์ ์งํ์ง๋ ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ๋ก ์ ์ฅ๋๋ ๊ฐ์ ๋ฃจํธ๊ฐ ๋๊ณ , ๋ ๋ฒ์งธ ๊ฐ์ ํธ๋ฆฌ์ ๋ฃจํธ๋ถํฐ ์์ํด์ ๊ฐ์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํ๋ฉด์ ํธ๋ฆฌ๋ฅผ ๋ฐ๋ผ ๋ด๋ ค๊ฐ๋๋ค. ์ด๋ ์์ ๊ฐ์ ์ผ์ชฝ์, ํฐ ๊ฐ์ ์ค๋ฅธ์ชฝ์ ์ ์ฅํฉ๋๋ค. ์ปดํจํฐ๋ ๊ฐ์ ์ค์ค๋ก ๋ชป ๋น๊ตํ๊ธฐ ๋๋ฌธ์ Comparable ํน์ Comparator๋ฅผ ์ ๊ณตํด ๋ ๊ฐ์ฒด๋ฅผ ๋น๊ตํ ๋ฐฉ๋ฒ์ ์๋ ค์ค์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด TreeSet์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ ๋ ์์ธ๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
์ผ์ชฝ ๋ง์ง๋ง ๊ฐ์์๋ถํฐ ์ค๋ฅธ์ชฝ ๊ฐ๊น์ง ๊ฐ์ [ ์ผ์ชฝ ๋ ธ๋ -> ๋ถ๋ชจ ๋ ธ๋ -> ์ค๋ฅธ์ชฝ ๋ ธ๋ ] ์์ผ๋ก ์ฝ์ด์ค๋ฉด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ ๋ ธ๋๋ฅผ ์ป์ ์ ์์ต๋๋ค. TreeSet์ ์ ๋ ฌ๋ ์ํ๋ฅผ ์ ์งํ๊ธฐ ๋๋ฌธ์ ๋จ์ผ ๊ฐ ๊ฒ์๊ณผ ๋ฒ์๊ฒ์์ด ๋งค์ฐ ๋น ๋ฆ ๋๋ค. * ์ ์ฅ๋ ๊ฐ์ ๊ฐ์์ ๋น๋กํด ๊ฒ์์๊ฐ์ด ์ฆ๊ฐํ๋ค.
๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ์ ์ฅํ๋ ๊ฒ์ด ์๋๋ผ ์ ์ฅ์์น๋ฅผ ์ฐพ์์ ์ ์ฅํด์ผํ๊ณ ์ญ์ ํ๋ ๊ฒฝ์ฐ ํธ๋ฆฌ์ ์ผ๋ถ๋ฅผ ์ฌ๊ตฌ์ฑํ๊ธฐ ๋๋ฌธ์ ๋งํฌ๋ ๋ฆฌ์คํธ๋ณด๋ค ๋ฐ์ดํฐ์ ์ถ๊ฐ/์ญ์ ์๊ฐ์ ์ค๋ ๊ฑธ๋ฆฝ๋๋ค. ํ์ง๋ง ๋ฐฐ์ด์ด๋ ๋งํฌ๋ ๋ฆฌ์คํธ์ ๋นํด ๊ฒ์๊ณผ ์ ๋ ฌ๊ธฐ๋ฅ์ด ๋ ๋ฐ์ด๋ฉ๋๋ค.
์ด์ง ๊ฒ์ ํธ๋ฆฌ(Binary Search Tree)๋
- ๋ชจ๋ ๋ ธ๋๋ ์ต๋ ๋ ๊ฐ์ ์์๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์๋ค.
- ์ผ์ชฝ ์์๋ ธ๋์ ๊ฐ์ ๋ถ๋ชจ๋ ธ๋ ๊ฐ๋ณด๋ค ์๊ณ ์ค๋ฅธ์ชฝ์์๋ ธ๋์ ๊ฐ์ ๋ถ๋ชจ๋ ธ๋์ ๊ฐ๋ณด๋ค ์ปค์ผํ๋ค.
- ์์ฐจ์ ์ผ๋ก ์ ์ฅํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ ธ๋์ ์ถ๊ฐ ์ญ์ ์ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
- ๋ฒ์๊ฒ์๊ณผ ์ ๋ ฌ์ ์ ๋ฆฌํ๋ค.
- ์ค๋ณต๋ ๊ฐ์ ์ ์ฅํ์ง ๋ชปํ๋ค.
๋ฐ์ดํฐ๋ฅผ ๋ฃ์ ๋ ์ ๋ ฌํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ๊ฐ์ ์ ๋ ฌํ ํ์๊ฐ ์์ต๋๋ค. ๋จ, ์ค์ค๋ก ์ ๋ ฌํ๋ ๋์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ/์ญ์ ํ ๋ ๋๋ ์๊ฐ๊ณผ ๋น์ฉ์ด ์ถ๊ฐ๋ก ๋ฐ์ํฉ๋๋ค. **์ฝ๊ธฐ ๊ธฐ๋ฅ์ ํฅ์ํ๋ฉด์ ์ฐ๊ธฐ์ ์ฝํ๋ค๊ณ ์๊ฐํ์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
2. ๋ถ๋ถ๊ฒ์(subset)
๋ถ๋ถ๊ฒ์์ ์ํ ๋ฉ์๋. ์ด๋ Set์ธํฐํ์ด์ค์๋ ์๋ TreeSet๋ง์ ๊ธฐ๋ฅ์ ๋๋ค. ๋ฐ๋ผ์ TreeSet<String>์ Set<String>์ผ๋ก ๋ฐ๊พธ๋ฉด ์๋์ ๊ฐ์ด ์๋ฌ๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
์์ ๊ณ์ธต๋๋ฅผ ํ์ธํด๋ณด๋ฉด Set์ AbstractSet<E>์ ์์ํ๊ณ . Set์ subSet( ) ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์์ง ์์ต๋๋ค.
3. ์ ๋ ฌ
๋ฌธ์์ด์ ๊ฒฝ์ฐ ์ ๋ ฌ์์๋ ๋ฌธ์์ ์ฝ๋๊ฐ์ด ๊ธฐ์ค์ด ๋๋ฏ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ๊ฒฝ์ฐ ์ฝ๋๊ฐ์ ํฌ๊ธฐ๊ฐ ์์ ์์์์ ํฐ ์์, ์ฆ ๊ณต๋ฐฑ, ์ซ์, ๋๋ฌธ์, ์๋ฌธ์ ์์ผ๋ก ์ ๋ ฌ๋๊ณ ๋ด๋ฆผ์ฐจ์์ ๊ฒฝ์ฐ ๊ทธ ๋ฐ๋๊ฐ ๋ฉ๋๋ค.
๋ฌธ์์ ์ฝ๋๊ฐ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
4. headSet / tailSet
headSet, tailSet์ ์ด์ฉํ๋ฉด TreeSet์ ์ ์ฅ๋ ๊ฐ์ฒด ์ค ์ง์ ๋ ๊ธฐ์ค ๊ฐ๋ณด๋ค ํฐ ๊ฐ ๊ฐ์ฒด๋ค๊ณผ ์์ ๊ฐ ๊ฐ์ฒด๋ค์ ์ป์ ์ ์์ต๋๋ค.
'๐ฅDEV > Java || Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
@Embedded์ ๊ธฐ๋ณธ ์์ฑ์ (0) | 2022.07.14 |
---|---|
๋ธ๋ฆฟ์ง ํจํด (0) | 2022.07.10 |
์ฑ๊ธํค๊ณผ ๋ฌธ์ ์ (0) | 2022.07.10 |
์ผ๊ธ ์ปฌ๋ ์ ๊ณผ ์ฃผ์์ฌํญ (0) | 2022.02.22 |
์์ํ๊ณผ String (0) | 2022.02.20 |
๋๊ธ