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
'Language > 자바' 카테고리의 다른 글
[Java] The Java Memory Architecture [1.Act] (0) | 2016.12.19 |
---|---|
[Java] Create and Understand Java HeapDumps (0) | 2016.12.19 |
객체지향의 개념 (0) | 2016.09.26 |
isInstanceOf vs isAssignable (0) | 2016.09.08 |
Java Stream / marshal, unmarshal / serializable / NIO (0) | 2016.09.05 |