๐ TreeSet
TreeSet
TreeSet์ Set ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค๋ก์จ ๊ฐ์ฒด๋ฅผ ์ค๋ณตํด์ ์ ์ฅํ ์ ์๊ณ ์ ์ฅ ์์๊ฐ ์ ์ง๋์ง ์๋๋ค๋ Set์ ์ฑ์ง์ ๊ทธ๋๋ก ๊ฐ์ง๊ณ ์๋ค. ์ด์ง ํ์ ํธ๋ฆฌ์ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ์ถ๊ฐ์ ์ญ์ ์๋ ์๊ฐ์ด ์กฐ๊ธ ๋ ๊ฑธ๋ฆฌ์ง๋ง, ์ ๋ ฌ๊ณผ ๊ฒ์์ ๋์ ์ฑ๋ฅ์ ๋ณด์ด๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
์ด์งํ์ํธ๋ฆฌ์ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก Nature Ordering์ ์ง์ํ๋ฉฐ ์์ฑ์์ ๋งค๊ฐ๋ณ์๋ก Comparator ๊ฐ์ฒด๋ฅผ ์ ๋ ฅํ์ฌ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ์์๋ก ์ง์ ํด์ค ์๋ ์๋ค.
๋ ๋ ๋ธ๋ ํธ๋ฆฌ : ๋ถ๋ชจ๋ ธ๋๋ณด๋ค ์์ ๊ฐ์ ๊ฐ์ง๋ ๋ ธ๋๋ ์ผ์ชฝ ์์์ผ๋ก, ํฐ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ ๋ ธ๋๋ ์ค๋ฅธ์ชฝ ์์์ผ๋ก ๋ฐฐ์นํ์ฌ ๋ฐ์ดํฐ์ ์ถ๊ฐ๋ ์ญ์ ์ ํธ๋ฆฌ๊ฐ ํ์ชฝ์ผ๋ก ์น์ฐ์ณ์ ธ์์ง ์๋๋ก ๊ท ํ์ ๋ง์ถ์ด์ค๋ค.
โ TreeSet ์ฌ์ฉ๋ฒ ( ์์ )
TreeSet ์ ์ธ
TreeSet์ ์์ฑํ๊ธฐ ์ํด์ ๊ฐ์ฒด ํ์ ์ ํ๋ผ๋ฏธํฐ๋ฅผ ํ๊ธฐํ๊ณ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ํธ์ถํ๋ฉด ๋๋ค. ์ ์ธ์ ํฌ๊ธฐ๋ฅผ ์ง์ ํด์ค ์ ์๋ค.
import java.util.TreeSet;
import java.util.Arrays;
TreeSet<Integer> ts1 = new TreeSet<Integer>(); // TreeSet ์์ฑ
TreeSet<Integer> ts2 = new TreeSet<>(); // new์์ ํ์
ํ๋ผ๋ฏธํฐ ์๋ต ๊ฐ๋ฅ
TreeSet<Integer> ts3 = new TreeSet<>(Arrays.asList(1,2,3)); // ์ด๊ธฐ๊ฐ ์ง์
โ TreeSet ๊ฐ ์ถ๊ฐ
add(value) ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ๊ฐ์ ์ถ๊ฐํ ์ ์๋ค.
TreeSet<Integer> ts1 = new TreeSet<>(); // TreeSet ์์ฑ
ts1.add(5);
ts1.add(3);
ts1.add(9);
ts1.add(7);
System.out.print(ts1); // ์ถ๋ ฅ๊ฒฐ๊ณผ : [3, 5, 7, 9]
โ TreeSet ๊ฐ ์ญ์
๊ฐ์ ์ญ์ ํ๊ธฐ ์ํด์๋ remove(value) ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ value๋ฅผ ์ญ์ ํ ์ ์๋ค.
๋ชจ๋ ๊ฐ์ ์ ๊ฑฐํ๋ ค๋ฉด clear() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
TreeSet<Integer> ts1 = new TreeSet<>(); // TreeSet ์์ฑ
ts1.add(5);
ts1.add(3);
ts1.add(9);
ts1.remove(3); // 3 ์ญ์
System.out.print(ts1); // ์ถ๋ ฅ ๊ฒฐ๊ณผ : [5, 9]
ts1.clear(); // ์ ์ฒด ์ญ์
System.out.print(ts1); // ์ถ๋ ฅ ๊ฒฐ๊ณผ : []
โ TreeSet ํฌ๊ธฐ ๊ตฌํ๊ธฐ
TreeSet<Integer> ts1 = new TreeSet<>(); // TreeSet ์์ฑ
ts1.add(5);
ts1.add(3);
ts1.add(9);
System.out.print(ts1.size()); // TreeSet ํฌ๊ธฐ : 3
โ TreeSet ์ถ๋ ฅ
TreeSet์ ๊ทธ๋ฅ ์ถ๋ ฅํ๊ฒ ๋๋ฉด ๋๊ดํธ๋ก ๋ฌถ์ด์ ์ ์ฒด ๊ฐ์ด ์ถ๋ ฅ๋๋ค. first()๋ฉ์๋๋ TreeSet์ ์ต์๊ฐ์, last()๋ฉ์๋๋ ์ต๋๊ฐ์ ๋ฐํํ๋ค. print ์ด์ธ์ TreeSet์ ์ ์ฒด ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ํฅ์๋ for๋ฌธ์ ์ฌ์ฉํ๊ฑฐ๋, ๊ฐ์ฒด๋ฅผ ํ๋์ฉ ๋ฐ๋ณตํด์ ๊ฐ์ ธ์ค๋ ๋ฐ๋ณต์(Iterator)๋ฅผ ์ฌ์ฉํ๋ค. Iterator์ hasNext() ๋ฉ์๋๋ ๊ฐ์ ธ์ฌ ๊ฐ์ฒด๊ฐ ์์ผ๋ฉด true๋ฅผ, ์์ผ๋ฉด false๋ฅผ ๋ฐํํ๋ค.
TreeSet์ ์ ์ฒด ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ๊ฐ์ฒด๋ฅผ ์ ์ฅํ ์์์ ๊ด๊ณ ์ ์ฑ ๊ฐ์ฒด๋ค์ด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ผ์ ์ถ๋ ฅ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค. TreeSet์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ด ๊ธฐ๋ณธ๊ฐ์ด๊ณ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ ๋ฐ๋ก ์๋ค.
TreeSet<Integer> ts1 = new TreeSet<>();
ts1.add(5);
ts1.add(3);
ts1.add(9);
System.out.print(ts1); // ์ ์ฒด ์ถ๋ ฅ : [3, 5, 9];
System.out.print(ts1.first()) // ์ต์๊ฐ ์ถ๋ ฅ : 3
System.out.print(ts1.last()) // ์ต๋๊ฐ ์ถ๋ ฅ : 9
// ํฅ์๋ for๋ฌธ ์ฌ์ฉ
for(int i : ts1)
System.out.print(i + " "); // ์ถ๋ ฅ ๊ฒฐ๊ณผ : 3 5 9
Iterator iter = ts1.iterator();
while(iter.hasNext())
System.out.print(iter.next() + " "); // ์ถ๋ ฅ ๊ฒฐ๊ณผ : 3 5 9
โ TreeSet ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
Comparator ์ฌ์ฉ
TreeSet<Integer> ts1 = new TreeSet<>(Comparator.reverseOrder()); // Comparator ์
๋ ฅํ์ฌ ์์๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
ts1.add(5);
ts1.add(3);
ts1.add(9);
Iterator iter = ts1.iterator();
while(iter.hasNext())
System.out.print(iter.next() + " "); // ์ถ๋ ฅ ๊ฒฐ๊ณผ : 9 5 3
'๐ ์ฝ๋ฉํ ์คํธ > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] ์คํํ๋ ์ & ์ฌ๊ทํจ์ (1) | 2024.01.11 |
---|---|
[JAVA] Comparable & Comparator (0) | 2024.01.09 |
[JAVA] HashSet (0) | 2023.04.05 |
[JAVA][์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ( Greedy Algorithm ) (0) | 2023.02.09 |
[JAVA] hasNextInt ๋ฉ์๋ (0) | 2023.01.05 |