[Java5.0] Comparator 를 이용한 List 객체 정렬

List 객체를 정렬을 하고자 한다. 
이때 Comparator 를 사용하면 된다.


import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class ListSortTest {

public static void main(final String[] arg){
List<TestVO> list = new ArrayList<TestVO>();

Comparator<TestVO> comparator = new Comparator<TestVO>(){
public int compare(final TestVO o1, final TestVO o2) {
return Long.valueOf(o1.getOrderDate()) > Long.valueOf(o2.getOrderDate()) ? 0 : 1;
}
} ;
for (int i = 0; i < 100; i++) {
list.add(new TestVO(String.valueOf(Calendar.getInstance().getTimeInMillis())));
try {
Thread.sleep(10);
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
for (TestVO testVO : list) {
System.out.println(testVO.getOrderDate());
}
///////////////////////////////
// sort
Collections.sort(list, comparator);  // sort

for (TestVO testVO : list) {
System.out.println(testVO.getOrderDate());
}


}
}
class TestVO {
private String orderDate;
public TestVO(final String sortDate){
super();
this.setOrderDate(sortDate);
}

/**
* @return orderDate
*/
public String getOrderDate() {
return this.orderDate;
}


/**
* @param orderDate : orderDate을 설정
*/
public void setOrderDate(final String orderDate) {
this.orderDate = orderDate;
}
}
크게 세가지가 필요하다.

1. 정렬할 List 객체 
2. sort 객체
3. List Item 이 되는 객체 

여기서 1번에 해당되는 List 객체는 list 이다.

List<TestVO> list = new ArrayList<TestVO>(); 


2번에 해당되는 객체는 comparator  이다

Comparator<TestVO> comparator = new Comparator<TestVO>(){ 
public int compare(final TestVO o1, final TestVO o2) { 
return Long.valueOf(o1.getOrderDate()) > Long.valueOf(o2.getOrderDate()) ? 0 : 1; 

} ;


3번에 해당되는 클래스는 TestVO 이다.

일단 TestVO 클래스에 정렬을 하고자 하는 속성이 반드시 있어야 한다.
그 속성을 이용하여 Comparator의 객체 생성시 조건에 넣는다.

그리고 아래와 같이 sort 를 시켜준다.

  Collections.sort(list, comparator);  // sort



'언어 > Java' 카테고리의 다른 글

[JAVA5.0] 자바 객체 직렬화하여 문자열 변수에 저장  (0) 2011.02.25
[JAVA5.0] 삼항연산자  (0) 2010.11.02
new  (0) 2010.10.27
Thread 간단 tip  (0) 2009.09.29
[JAVA5.0] 열거형 상수, enum 사용( Enumeration )  (0) 2009.03.24