DB에서 나오는 정보라면 order by 같은 것으로 정렬을 할 수 있습니다.
그런데 그렇지 않다면 어떻게 해야 할까요?
여기에 그 해결책이 있습니다.
Collection.sort(Object o1,Object o2) 라는 것이죠.
o1에는 List 객체를, o2에는 리스트를 정렬할 조건을 넣어주면 됩니다.
여기서 주의 할 점은 o2는 implements 로 Comparator 를 구현해 주어야 한다는
겁니다. 이것은 compare(Object o1,Object o2)를 구현해 주는 것을 의미하며
return 값은 int 입니다.
return을 어떻게 해주면 되냐하면...
리스트의 앞에 나오게 할 조건에 return을 -1
뒤에 나오게 할 조건의 return 을 1
동등한 위치를 0 으로 주게 하면 됩니다.
문자 비교를 통해 알아 봅시다.
package test;
import java.util.*;
public class listTest {
public static void main(String[] args){
Vector vec = new Vector();
vec.add("RRL(1)");
vec.add("RRL");
vec.add("RRL(8)");
Collections.sort(vec,new comp());
for(int i=0;i<vec.size();i++){
System.out.println((String)vec.get(i));
}
}
}
------------------------------------------------package test;import java.util.Comparator;public class comp implements Comparator{
public int compare(Object o1,Object o2){
String s1 = (String)o1;
String s2 = (String)o2;
return s1.compareTo(s2); }}
이것만 가지고는 잘 모르겠다구요?
int 로 구현한걸 보면 바로 아실수 있습니다.
package test;
import java.util.*;
public class listTest {
public static void main(String[] args){
Vector vec = new Vector();
vec.add(1004);
vec.add(233);
vec.add(50001);
Collections.sort(vec,new comp());
for(int i=0;i<vec.size();i++){
System.out.println((Integer)vec.get(i));
}
}
}--------------------------------------------package test;import java.util.Comparator;public class comp implements Comparator{
public int compare(Object o1,Object o2){
int result = 0;
int i1 = (Integer)o1;
int i2 = (Integer)o2;
if(i1 < i2){
result = -1;
}else if(i1 > i2){
result = 1;
}else{
result = 0;
}
return result; }}
여기서는 int 를 알아보기 쉽게 이렇게 썻지만 Integer는 compareTo() 가 있으므로
이걸로 쓰면 바로 됩니다.
궁금한 점이 있으면 댓글로 남겨주세요
'JAVA' 카테고리의 다른 글
[ JAVA ] TreeSet 으로 중복 제거 및 정렬 하는 법 (DTO 기준) (0) | 2009.12.04 |
---|---|
[ JAVA ] XSS 보안 관련 자바 모듈 (0) | 2009.08.20 |
자바 long 형 계산과 NumberFormat (,) 붙이기 (0) | 2009.06.09 |
자바 현재 날짜 구하기 및 계산 (0) | 2009.06.02 |
[ JAVA ] 자바 소켓 통신 null 값 보내기 (0) | 2009.05.17 |
댓글