์ถ์ฒ
ChatGPT
์์ฐ ์์(Natural Ordering)๋ ์๋ฐ์์ Comparable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ฐ์ฒด๋ค์ด ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ์ ๋ ฌ ์์๋ฅผ ์๋ฏธํ๋ค. ์ด ์์๋ ์๋ฐ์์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ์ด๋ ํด๋์ค๊ฐ ๊ฐ์ง๋ ๋ด์ฌ๋ ์์๋ฅผ ๋ฐ๋ฅด๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋๋ค.
1. ์์ฐ ์์๋ฅผ ๋ฐ๋ฅด๋ ํด๋์ค
๋ค์๊ณผ ๊ฐ์ ํด๋์ค๋ค์ ๊ธฐ๋ณธ์ ์ผ๋ก Comparable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ณ , ์์ฐ ์์๋ฅผ ์ ์ํ๋ค.
Integer, Double ๋ฑ ์ซ์ํ ํด๋์ค
์ซ์์ ํฌ๊ธฐ ์์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ๋๋ค. ์๋ฅผ ๋ค์ด, 1,2,3 ์์ผ๋ก ์ ๋ ฌ๋๋ค.
String
์ํ๋ฒณ ์์๋ก ์ ๋ ฌ๋๋ค. ์๋ฅผ ๋ค์ด, "apple" < "banana" < "cherry".
Character
์ ๋์ฝ๋ ๊ฐ ์์๋ก ์ ๋ ฌ๋๋ค.
2. ์์ฐ ์์๋ฅผ ์ฌ์ฉํ ์์
TreeMap๊ณผ ๊ฐ์ ์๋ฃ๊ตฌ์กฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํค์ ์์ฐ ์์๋ฅด ๋ฐ๋ฅธ๋ค.
import java.util.TreeMap;
public class NaturalOrderingExample {
public static void main(String[] args) {
TreeMap<String, Integer> map = new TreeMap<>();
map.put("banana", 20);
map.put("apple", 10);
map.put("cherry", 30);
System.out.println(map);
}
}
์ถ๋ ฅ ๊ฒฐ๊ณผ
{apple=10, banana=20, cherry=30}
์ฌ๊ธฐ์ TreeMap์ ํค๊ฐ String ํ์ ์ด๋ฉฐ, ์์ฐ ์์์ ๋ฐ๋ผ ์ํ๋ฒณ ์์๋ก ์ ๋ ฌ๋๋ค.
3. Comparable ์ธํฐํ์ด์ค
์์ฐ ์์๋ ๊ฐ์ฒด๊ฐ Comparable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ์ฌ ์ ์๋๋ค. ์ด ์ธํฐํ์ด์ค๋ compareTo() ๋ฉ์๋๋ฅด ํตํด ๊ฐ์ฒด ๊ฐ์ ๋น๊ต๋ฅผ ์ํํ๋ฉฐ, ์ด๋ฅผ ํตํด ์์ฐ ์์๋ฅผ ๊ฒฐ์ ํ๋ค.
๋ด๊ฐ Comparable ์ธํฐํ์ด์ค๋ฅผ ์์ํ๋ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ ์์ฐ ์์๋ฅผ ๋ด๊ฐ ๋ง๋ค ์๋ ์๋ ๊ฒ.
์๋ฅผ ๋ค์ด, String ํด๋์ค๋ Comparable<String>์ ๊ตฌํํ๊ณ , compareTo() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์ํ๋ฒณ ์์๋ก ๋ฌธ์์ด์ ๋น๊ตํ๋ค.
public class String implements Comparable<String> {
public int compareTo(String anotherString) {
// ๋ฌธ์์ด์ ์ ๋์ฝ๋ ๊ฐ์ ๋ฐ๋ผ ๋น๊ต
}
}
4. ์ฌ์ฉ์ ์ ์ ๊ฐ์ฒด์์ ์์ฐ ์์ ์ ์
์ฌ์ฉ์ ์ ์ ํด๋์ค๊ฐ ์์ฐ ์์๋ฅผ ๋ฐ๋ฅด๊ธฐ ์ํด์๋ Comparable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด์ผ ํ๋ค.
class Person implements Comparable<Person> {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// ๋์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ๋น๊ต
@Override
public int compareTo(Person other) {
return Integer.compare(this.age, other.age);
}
@Override
public String toString() {
return name + ": " + age;
}
}
public class NaturalOrderingPersonExample {
public static void main(String[] args) {
TreeSet<Person> set = new TreeSet<>();
set.add(new Person("Alice", 30));
set.add(new Person("Bob", 25));
set.add(new Person("Charlie", 35));
System.out.println(set);
}
}
์ถ๋ ฅ ๊ฒฐ๊ณผ
[Bob: 25, Alice: 30, Charlie: 35]
์ ์์์์ Person ๊ฐ์ฒด๋ ๋์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋๋ฉฐ, TreeSet์ ์์ฐ ์์์ ๋ฐ๋ผ ๊ฐ์ฒด๋ฅผ ์ ๋ ฌํ๋ค.
Person์ ์์ฐ ์์๊ฐ ๋์ด์ธ ๊ฒ.
๊ฒฐ๋ก
์์ฐ ์์(Natural Ordering)๋ Comparable ์ธํฐํ์ด์ค๋ฅผ ํตํด ๊ฐ์ฒด์ ๊ธฐ๋ณธ ์ ๋ ฌ ์์๋ฅผ ์ ์ํ๋ฉฐ, ์๋ฐ์ TreeMap, TreeSet๊ณผ ๊ฐ์ ์๋ฃ๊ตฌ์กฐ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ๋๋ค. ์ด๋ฅผ ํตํด ํด๋์ค ๊ฐ์ ์ผ๊ด๋ ๋น๊ต ๋ฐ ์ ๋ ฌ ์์ ์ด ๊ฐ๋ฅํด์ง๋ค.
'๋น ๊ตฌ๋ฉ ์ฑ์ฐ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] TreeMap ๊ตฌํ (0) | 2024.09.14 |
---|---|
[Java] NavigableMap (0) | 2024.09.14 |
[Java] SortedMap (0) | 2024.09.11 |
[Java] HashMap ๊ตฌํ (0) | 2024.09.11 |
[Java] Hashtable์ Enumeration ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค. (0) | 2024.09.11 |