package edu.exam13.ex06treeset_sort;
import java.util.Iterator;
import java.util.TreeSet;
//TreeSet은 정렬이 이루어지는 자료구조, 정렬규칙을 정해준다.
//TreeSet은 Comparable 인터페이스 상속을 통해 compareTo를 오버라이드해서 정렬 규칙을 정해줘야한다.
class Human implements Comparable<Human> {
String name;
int age;
Human(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return name + ":" + age;
}
public int compareTo(Human h) { //compareTo를 상속 오버라이딩해서 정렬규칙을 정해준다.
if(age > h.age) return 1;
else if(age < h.age) return -1;
else return 0;
}
}
public class UseTreeSetSort {
public static void main(String[] args) {
TreeSet<Human> sTree = new TreeSet<Human>();
sTree.add(new Human("Lee", 24));
sTree.add(new Human("Hong", 33));
sTree.add(new Human("Kim", 21));
Iterator<Human> itr = sTree.iterator();
while (itr.hasNext())
System.out.println(itr.next());
}
}
package edu.exam13.ex06treeset_sort;
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
//TreeSet은 정렬이 이루어지는 자료구조, 정렬규칙을 정해준다.
//TreeSet은 Comparable 인터페이스 상속을 통해 compareTo를 오버라이드해서 정렬 규칙을 정해줘야한다.
//정렬 시 정렬대상 클래스에 Comparable을 상속받게 하고 compareTo에서는 가장 표준적인 정렬을 둔다.
//다른 방식으로는 Comparator를 상속받은 클래스를 생성해서 부가적인 정렬을 하도록 한다.
//나이로 정렬 2
class AgeComparator implements Comparator<Human>{
public int compare(Human h0, Human h1) {
return h0.age - h1.age;
}
}
//이름 길이로 정렬 3
class NameLenComparator implements Comparator<Human>{
public int compare(Human h0, Human h1) {
return h0.name.length() - h1.name.length();
}
}
class Human implements Comparable<Human> {
String name;
int age;
Human(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return name + ":" + age;
}
public int compareTo(Human h) { //compareTo를 상속 오버라이딩해서 정렬규칙을 정해준다. 1
if(age > h.age) return 1;
else if(age < h.age) return -1;
else return 0;
}
}
public class UseTreeSetSort {
public static void main(String[] args) {
//TreeSet<Human> sTree = new TreeSet<Human>(); //1.일반적으로 정렬
//TreeSet<Human> sTree = new TreeSet<Human>(new AgeComparator()); //2.나이로 정렬
TreeSet<Human> sTree = new TreeSet<Human>(new NameLenComparator()); //3.이름 길이로 정렬
sTree.add(new Human("Lee", 24));
sTree.add(new Human("Hong", 33));
sTree.add(new Human("Kimkk", 21));
Iterator<Human> itr = sTree.iterator();
while (itr.hasNext())
System.out.println(itr.next());
}
}
'JAVA > java 예제' 카테고리의 다른 글
TreeMap 예제 (0) | 2020.01.29 |
---|---|
TreeSet 예제 (0) | 2020.01.29 |
얕은복사 깊은복사 예제 (0) | 2020.01.28 |
링크드리스트 구현 예제 (0) | 2020.01.20 |
링크드리스트로 구현한 주소록 프로그램 (0) | 2020.01.20 |