(1) ์ ์
Red-black Tree๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํํ Key ๊ฐ์ ๊ธฐ์ค์ผ๋ก
์ ๋ ฌ๋๋ Map์ด๋ค.
์ ๋ ฌ ๊ธฐ์ค์ default๋ก ์ค๋ฆ์ฐจ์์ด๊ณ , ๋งค๊ฐ๋ณ์๋ก Comparator๋ฅผ ๋ฃ์ผ๋ฉด, ๊ฐ๋ฐ์ ์
๋ง์ ๋ฐ๋ผ ๋ฐ๊ฟ ์ ์๋ค.
TreeMap<Student, Integer> map = new TreeMap<>((o1,o2) -> (return o1.score - o2.score));
Red-black Tree ๋?
์ด์งํ์์ ๋ณด์ํ์ฌ ์ฑ๋ฅ์ ๊ฐ์ ํ Tree ์๋ฃ ๊ตฌ์กฐ์ด๋ค. ์ด์งํ์์ ์ผ๋ฐ์ ์ผ๋ก O(logN)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง์ง๋ง, ๋ฐ์ดํฐ๊ฐ ํ์ชฝ์ผ๋ก ์น์ฐ์ณ์, ์ผ์ํ Tree๊ฐ ๋์ฌ ๊ฒฝ์ฐ(ex- ๊ณ์ ์์ ๊ฐ์ ๋ฐ์ดํฐ๋ง ์ ๋ ฅ ๋ฑ) O(n)์ด๋ผ๋ ์๊ฐ๋ณต์ก๋๊ฐ ๋ ๋ค. ์ด์ ๋นํด Red-black Tree๋ ๋ถ๋ชจ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ํฐ ๊ฐ์ ์ค๋ฅธ์ชฝ, ์์ ๊ฐ์ ์ธ์ชฝ์ผ๋ก ๋์ด, ์ด์์ ์ธ ์ด์งํธ๋ฆฌ ๋ชจ์ ํ์ฑ์ ์ ๋ํ๋ค. ๋ฐ๋ผ์ Red-Black Tree๋ ์ฝ์ , ์ญ์ , ์กฐํ ๋ชจ๋์์ O(logN)์ด๋ผ๋ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.(2) ์๊ฐ ๋ณต์ก๋
TreeMap์ Red-black Tree๋ก ๊ตฌํ๋์ด์ ์ฝ์
, ์ญ์ , ์กฐํ ๋ชจ๋์์ O(logN)
์ ๋ณด์ฅํ๋ค. O(1)์ธ hashMap๋ณด๋ค๋ ๋๋ฆฌ์ง๋ง, ์ ๋ ฌ๋ map์ด ํ์ํ ๊ฒฝ์ฐ์ ํจ์จ์ ์ด๋ค.
(3) ๋น์ถ ๋งค์๋
# | ์ด๋ฆ | ์ค๋ช |
---|---|---|
1 | map.firstKey() | ์ ๋ ฌ ํ์ ๋, ์ ์ผ ์์ key๋ฅผ ๋ฐํ |
2 | map.lastKey() | ์ ๋ ฌ ํ์ ๋, ์ ์ผ ํฐ key๋ฅผ ๋ฐํ |
3 | map.ceilingKey(K key) | ๋งค๊ฐ๋ณ์๋ก ๋ฃ์ key๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฉด์ ์ ์ผ ๊ทผ์ ํ ๊ฐ์ ๋ฐํ |
4 | map.lowerKey(K key) | ๋งค๊ฐ ๋ณ์๋ก ๋ฃ์ key๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ผ๋ฉด์ ์ ์ผ ๊ทผ์ ํ ๊ฐ์ ๋ฐํ |
5 | map.pollFirstEntry() | ์ ๋ ฌ ํ์ ๋, ์ ์ผ ์์ key์ EntrySet()์ map์์ ์ญ์ ๋ฐ ๋ฐํ |
6 | map.pollLastEntry() | ์ ๋ ฌ ํ์ ๋, ์ ์ผ ํฐ key์ EntrySet()์ map์์ ์ญ์ ๋ฐ ๋ฐํ |
0