본문 바로가기

IT

배열을 정렬하는 방법

반응형

 동일한 타입의 데이터가 배열로 존재하는 경우 이를 정렬(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) {
		ArrayList alNumber = 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() 메소드만 이용하면 원하는 방식으로 정렬을 할 수 있겠죠?


끝.

반응형