โจ TreeMap ์ด๋ ๋ฌด์์ธ๊ฐ์?
- TreeMap์ ์ด์งํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ Map ์ปฌ๋ ์ ์ ๋๋ค.
- ๊ฐ์ Tree๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ง TreeSet๊ณผ์ ์ฐจ์ด์ ์ TreeSet์ ๊ทธ๋ฅ ๊ฐ๋ง ์ ์ฅํ๋ค๋ฉด TreeMap์ ํค์ ๊ฐ์ด ์ ์ฅ๋ Map, Etnry๋ฅผ ์ ์ฅํ๋ค๋ ์ ์ ๋๋ค.
- TreeMap์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ฉด ์๋์ผ๋ก ์ ๋ ฌ๋๋๋ฐ, ํค๋ ์ ์ฅ๊ณผ ๋์์ ์๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋๊ณ ์ซ์ ํ์ ์ผ ๊ฒฝ์ฐ์๋ ๊ฐ์ผ๋ก, ๋ฌธ์์ด ํ์ ์ผ ๊ฒฝ์ฐ์๋ ์ ๋์ฝ๋๋ก ์ ๋ ฌํฉ๋๋ค.
- ์ ๋ ฌ ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ถ๋ชจ ํค๊ฐ๊ณผ ๋น๊ตํด์ ํค ๊ฐ์ด ๋ฎ์ ๊ฒ์ ์ผ์ชฝ ์์ ๋ ธ๋์ ํค๊ฐ์ด ๋์ ๊ฒ์ ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋์ Map.Etnry ๊ฐ์ฒด๋ฅผ ์ ์ฅํฉ๋๋ค.
- TreeMap์ ์ผ๋ฐ์ ์ผ๋ก Map์ผ๋ก์จ์ ์ฑ๋ฅ์ด HashMap๋ณด๋ค ๋จ์ด์ง๋๋ค.
- TreeMap์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์ฆ์ ์ ๋ ฌํ๊ธฐ์ ์ถ๊ฐ๋ ์ญ์ ๊ฐ HashMap๋ณด๋ค ์ค๋ ๊ฑธ๋ฆฝ๋๋ค.
- ํ์ง๋ง ์ ๋ ฌ๋ ์ํ๋ก Map์ ์ ์งํด์ผ ํ๊ฑฐ๋ ์ ๋ ฌ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํด์ผ ํ๋ ๋ฒ์ ๊ฒ์์ด ํ์ํ ๊ฒฝ์ฐ TreeMap์ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์จ์ฑ๋ฉด์์ ์ข์ต๋๋ค.
์ถ์ฒ : ๋งํฌ
TreeMap์ ์ด์งํ์ํธ๋ฆฌ์ ๋ฌธ์ ์ ์ ๋ณด์ํ ๋ ๋-๋ธ๋ ํธ๋ฆฌ(Red-Black Tree)๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์ผ๋ฐ์ ์ธ ์ด์ง ํ์ ํธ๋ฆฌ๋ ํธ๋ฆฌ์ ๋์ด๋งํผ ์๊ฐ์ด ํ์ํฉ๋๋ค.
๊ฐ์ด ์ ์ฒด ํธ๋ฆฌ์ ์ ๋ถ์ฐ๋์ด ์๋ค๋ฉด ํจ์จ์ฑ์ ์์ด ํฌ๊ฒ ๋ฌธ์ ๊ฐ ์์ผ๋
๋ฐ์ดํฐ๊ฐ ๋ค์ด์ฌ ๋ ๊ฐ์ด ํ์ชฝ์ผ๋ก ํธํฅ๋๊ฒ ๋ค์ด์ฌ ๊ฒฝ์ฐ ํ์ชฝ ๋ฐฉ๋ฉด์ผ๋ก ํฌ๊ฒ ์น์ฐ์ณ์ง ํธ๋ฆฌ๊ฐ ๋์ด ๊ต์ฅํ ๋นํจ์จ์ ์ธ ํผํฌ๋จผ์ค๋ฅผ ๋ ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ๋ ๋ ๋ธ๋ ํธ๋ฆฌ๊ฐ ๋ฑ์ฅํ์์ต๋๋ค.
๋ ๋ ๋ธ๋ ํธ๋ฆฌ๋ ๋ถ๋ชจ ๋ ธ๋๋ณด๋ค ์์ ๊ฐ์ ๊ฐ์ง๋ ๋ ธ๋๋ ์ผ์ชฝ ์์์ผ๋ก,
ํฐ ๊ฐ์ ๊ฐ์ง๋ ๋ ธ๋๋ ์ค๋ฅธ์ชฝ ์์์ผ๋ก ๋ฐฐ์นํ์ฌ
๋ฐ์ดํฐ์ ์ถ๊ฐ๋ ์ญ์ ์ ํธ๋ฆฌ๊ฐ ํ์ชฝ์ผ๋ก ์น์ฐ์ณ์ง์ง ์๋๋ก ๊ท ํ์ ๋ง์ถ์ด์ค๋๋ค.
โจ TreeMap ์ฌ์ฉ๋ฒ
โ TreeMap ์ ์ธ
/* TreeMap์์ฑ */
TreeMap<Integer,String> map1 = new TreeMap<Integer,String>();
/* new์์ ํ์
ํ๋ผ๋ฏธํฐ ์๋ต๊ฐ๋ฅ */
TreeMap<Integer,String> map2 = new TreeMap<>();
/* map1์ ๋ชจ๋ ๊ฐ์ ๊ฐ์ง TreeMap์์ฑ */
TreeMap<Integer,String> map3 = new TreeMap<>(map1);
/* ์ด๊ธฐ๊ฐ ์ค์ */
TreeMap<Integer,String> map6 = new TreeMap<Integer,String>(){{
put(1,"a");
}};
โ TreeMap ๊ฐ ์ถ๊ฐ
/* TreeMap์์ฑ */
TreeMap<Integer,String> map = new TreeMap<Integer,String>();
map.put(1, "์ฌ๊ณผ");//๊ฐ ์ถ๊ฐ
map.put(2, "๋ณต์ญ์");
map.put(3, "์๋ฐ");
โ TreeMap ๊ฐ ์ญ์
/* ์ด๊ธฐ๊ฐ ์ค์ */
TreeMap<Integer, String> map = new TreeMap<Integer,String>(){{
put(1, "์ฌ๊ณผ");//๊ฐ ์ถ๊ฐ
put(2, "๋ณต์ญ์");
put(3, "์๋ฐ");
}};
/* key๊ฐ 1 ์ ๊ฑฐ */
map.remove(1);
/* ๋ชจ๋ ๊ฐ ์ ๊ฑฐ */
map.clear();
โ TreeMap ๋จ์ผ ๊ฐ ์ถ๋ ฅ
TreeMap<Integer,String> map = new TreeMap<Integer,String>(){{//์ด๊ธฐ๊ฐ ์ค์
put(1, "์ฌ๊ณผ");//๊ฐ ์ถ๊ฐ
put(2, "๋ณต์ญ์");
put(3, "์๋ฐ");
}};
System.out.println(map); //์ ์ฒด ์ถ๋ ฅ : {1=์ฌ๊ณผ, 2=๋ณต์ญ์, 3=์๋ฐ}
System.out.println(map.get(1));//key๊ฐ 1์ value์ป๊ธฐ : ์ฌ๊ณผ
System.out.println(map.firstEntry());//์ต์ Entry ์ถ๋ ฅ : 1=์ฌ๊ณผ
System.out.println(map.firstKey());//์ต์ Key ์ถ๋ ฅ : 1
System.out.println(map.lastEntry());//์ต๋ Entry ์ถ๋ ฅ: 3=์๋ฐ
System.out.println(map.lastKey());//์ต๋ Key ์ถ๋ ฅ : 3
โ TreeMap ์ ์ฒด ๊ฐ ์ถ๋ ฅ
TreeMap<Integer,String> map = new TreeMap<Integer,String>(){{//์ด๊ธฐ๊ฐ ์ค์
put(1, "์ฌ๊ณผ");//๊ฐ ์ถ๊ฐ
put(2, "๋ณต์ญ์");
put(3, "์๋ฐ");
}};
//entrySet() ํ์ฉ
for (Entry<Integer, String> entry : map.entrySet()) {
System.out.println("[Key]:" + entry.getKey() + " [Value]:" + entry.getValue());
}
//[Key]:1 [Value]:์ฌ๊ณผ
//[Key]:2 [Value]:๋ณต์ญ์
//[Key]:3 [Value]:์๋ฐ
//KeySet() ํ์ฉ
for(Integer i : map.keySet()){ //์ ์ฅ๋ key๊ฐ ํ์ธ
System.out.println("[Key]:" + i + " [Value]:" + map.get(i));
}
//[Key]:1 [Value]:์ฌ๊ณผ
//[Key]:2 [Value]:๋ณต์ญ์
//[Key]:3 [Value]:์๋ฐ
โ Iterator
iterate : (๊ณ์ฐ, ์ปดํจํฐ ์ฒ๋ฆฌ ์ ์ฐจ๋ฅผ) ๋ฐ๋ณตํ๋ค
iterator : ๋ฐ๋ณต์
TreeMap์ ์ ์ฒด์ถ๋ ฅ ์ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ง ์๊ณ Iterator๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
TreeMap<Integer,String> map = new TreeMap<Integer,String>(){{//์ด๊ธฐ๊ฐ ์ค์
put(1, "์ฌ๊ณผ");//๊ฐ ์ถ๊ฐ
put(2, "๋ณต์ญ์");
put(3, "์๋ฐ");
}};
//entrySet().iterator()
Iterator<Entry<Integer, String>> entries = map.entrySet().iterator();
while(entries.hasNext()){
Map.Entry<Integer, String> entry = entries.next();
System.out.println("[Key]:" + entry.getKey() + " [Value]:" + entry.getValue());
}
//[Key]:1 [Value]:์ฌ๊ณผ
//[Key]:2 [Value]:๋ณต์ญ์
//[Key]:3 [Value]:์๋ฐ
//keySet().iterator()
Iterator<Integer> keys = map.keySet().iterator();
while(keys.hasNext()){
int key = keys.next();
System.out.println("[Key]:" + key + " [Value]:" + map.get(key));
}
//[Key]:1 [Value]:์ฌ๊ณผ
//[Key]:2 [Value]:๋ณต์ญ์
//[Key]:3 [Value]:์๋ฐ
์ถ์ฒ : ๋งํฌ
'๊ฐ๋ฐ์ธ์ด > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ๋ ๋ ์ง ์ฌ์ด์ ์ฐจ์ด ๊ณ์ฐ (0) | 2022.04.10 |
---|---|
[Java] HashMap ์ฌ์ฉ๋ฒ (0) | 2022.04.10 |
[Java] Map - getOrDefault ์ด๋? (0) | 2022.04.06 |
[Java] ์ฒ ๋จ์ ์ฝค๋ง ์ฐ๊ธฐ (Format ํด๋์ค , ์ฝค๋ง ์ ๊ท์) (0) | 2022.03.15 |
[Java] ์๋ฐ ํ์ผ ์ฝ๊ณ ์ฐ๊ธฐ / FileRead & FileWrite (0) | 2022.03.11 |