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

+ Recent posts