본문 바로가기

Java

Collections를 이용한 List 객체들의 Sorting(정렬) [펌]

package test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;


/**
* @author 이준성
*
*/
public class Test {

 /**
 * @param args
 */
 @SuppressWarnings("unchecked")
 public static void main(String[] args) {

  ArrayList list = new ArrayList();
  Random rd = new Random();

  for(int i=0 ; i<10 ; i++) {
   list.add(new Integer(rd.nextInt()));
  }

  Collections.sort(list);   // 이거 한줄이면 정열이 됩니다.

  for (Object object : list) {
   System.out.println(object);
  }

 }

}


파라메터를 List로 받아서 List 구현한놈은 다 소팅할수 있습니다. ArrayList 같은 녀석들요
근데, 기본적으로 이놈은 오름차순으로 정렬을 합니다. 그렇지만 다른방식으로 정렬할수 있는 기능도 있습니다.

아래는 초단간 소스 입니다.

/**
 *
 */
package test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Random;

/**
 * @author 이준성
 *
 */
public class Test {

 /**
 * @param args
 */
 @SuppressWarnings("unchecked")
 public static void main(String[] args) {

  ArrayList list = new ArrayList();
  Random rd = new Random();

  for(int i=0 ; i<10 ; i++) {
   list.add(new Integer(rd.nextInt()));
  }

  Collections.sort(list, new UserCompare());

  for (Object object : list) {
   System.out.println(object);
  }
 }

 @SuppressWarnings("unchecked")
 public static class UserCompare implements Comparator {

  public int compare(Object o1, Object o2) {

   int a = ((Integer)o1).intValue();
   int b = ((Integer)o2).intValue();

   if(a > b) {
    return -1;
   }else if(a<b) {
    return 1;
   }else {
    return 0;
   }
  }

 }
}

다른방식으로(개발자 임의로 정열)하기 위해서는 Comparator 인터페이스를 구현(UserCompare 클래스 만듬)하여, Collections.sort(list, new UserCompare()); 이렇게 호출하여 주면 됩니다. 인자가 하나 더 늘어났습니다.
아~ 물론 Comparator 를 구현할시에 compare 메소드를 꼭 구현해야 하고 , 정렬방식을 코딩하면 됩니다. 정렬할때 compare 이 메소드를 내부적으로 호출해서 정렬을 하거든요!!!

[출처] 자바 API를 이용한 정렬,소팅 <List를 상속받은 ArrayList같은 것들>|작성자 달빛