본문 바로가기

Java

[java] TreeSet과 Comparable

TreeSet을 생성 할 때 Comparator를 지정해주지 않으면 저장하는 객체에

구현된 정렬방식에 따라 정렬하여 저장한다.

TreeSet set1 = new TreeSet();
TreeSet set2 = new TreeSet(new Descending()); //TreeSet(Comparator c)

int[] score = {30,50,10,20,40};

for(int i = 0; i < score.length; i++) {
 set1.add(new Integer(score[i]));
 set2.add(new Integer(score[i]));
}


class Descending implements Comparator {
 public int compare(Object o1, Object o2) {
 if(o1 instanceof Comparable && o2 instanceof Comparable) {
  Comparable c1 = (Comparable)o1;
  Comparable c2 = (Comparable)o2;
return c1.compareTo(c2) * -1; //기본 정렬의 역방식으로 변경 혹은
//c2.compareTo(c1)
} return -1
}
}


- 내림차순으로 변경시 compare()의 매개변수가 Object 이므로 compareTo()를
바로 호출 할 수 없으므로 먼저 Comparable로 형변환 해야함.


출처 : http://blog.naver.com/tarott?Redirect=Log&logNo=70023335279