본문 바로가기

Language/자바

자바 Comparator 구현

http://elaia.tistory.com/7 참조



[Java] Comparator를 이용한 정렬



ArrayList<Child1> list = new ArrayList<Child1>();
  
  // 정렬에 사용될 오브젝트(Child1) 선언
  Child1 c1 = new Child1();
  Child1 c2 = new Child1();
  Child1 c3 = new Child1();
  Child1 c4 = new Child1();
  Child1 c5 = new Child1();

  // 3, 2, 1, 4, 5 순으로 값을 셋팅하고 
  c1.setOrder("3");
  c2.setOrder("2");
  c3.setOrder("1");
  c4.setOrder("4");
  c5.setOrder("5");
  
  // 선언된 ArrayList에 차례대로 셋팅한다.
  // 따라서 해당 리스트에는 3, 2, 1, 4, 5 순으로 저장되어 있다.
  list.add(c1);
  list.add(c2);
  list.add(c3);
  list.add(c4);
  list.add(c5);
  
  // 실제 정렬하기 전의 상태를 보여주기 위해 한번 print한다 (after 정렬과의 비교위해..)
  System.out.println("before sort!");
  printRst(list);  // 단순 print 함수
  
  // Child1의 order 항목을 비교하여 Sort
  Comparator<Child1> sort = new Comparator<Child1>() {
   public int compare(Child1 o1, Child1 o2) {
    return o2.getOrder().compareTo(o1.getOrder());
   }
  };
  Collections.sort(list, sort); // 위에 설정한 내용대로 정렬(sort!)
  
  // 정렬된 결과값 셋팅
  System.out.println("\n\nafter sort!");
  printRst(list);
 }

 // 단순 결과 print 함수  
 public static void printRst(ArrayList<Child1> list) {
  for (Child1 each : list) 
   System.out.println(each.getOrder());
 }
}

// 정렬 대상이 되는 클래스
class Child1 {
 String order; // 해당값을 비교하여 정렬한다.

 public String getOrder() {
  return order;
 }

 public void setOrder(String order) {
  this.order = order;
 }
}





** 정리 :


compare(Child o1, Child o2)

{

return o1.getOrder().compareTo(o2.getOrder());

}


이렇게 하면


1

2

3

4

5



반대면


02.getOrder().compareTo(o1.getOrder())


5

4

3

2

1