반응형
동일한 타입의 데이터가 배열로 존재하는 경우 이를 정렬(Sort)하고 싶은 경우가 있습니다.
자바에서는 Comparator 라는 클래스를 정의하여 이를 해결할 수 있습니다. 데이터를 정렬하고 싶은 규칙만 있다면 정렬하는 것은 어렵지 않습니다.
자 아래의 코드는 Integer 타입의 ArrayList의 데이터를 정렬하는 연습코드입니다.
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class TestComaprator { public static void main(String[] args) { ArrayListalNumber = new ArrayList (); alNumber.add(new Integer(2003)); alNumber.add(new Integer(2127)); alNumber.add(new Integer(2126)); alNumber.add(new Integer(2002)); System.out.println("UNSORT"); for (Integer in : alNumber) { System.out.println(in.toString()); } Collections.sort(alNumber, MyComparator); System.out.println("\n\nSORTED"); for (Integer in : alNumber) { System.out.println(in.toString()); } } private static final Comparator MyComparator = new Comparator () { @Override public int compare(Integer lhs, Integer rhs) { // 왼쪽이 오른쪽보다 크면 1을 리턴, 아니면 -1을 리턴한다. // 내림차순 정렬 // 오름차순 정렬로 변경하려면 '>' 를 '<'로 변경 return lhs.intValue() > rhs.intValue() ? 1 : -1; } }; }
이제 데이터에 따라서 원하는 방식으로 정렬하고 싶다면 적당한 이벤트에 다양한 Comparator를 추가하여 Collections.sort() 메소드만 이용하면 원하는 방식으로 정렬을 할 수 있겠죠?
끝.
반응형