본문 바로가기

Java

[Java] ArrayList 정렬 / Collections, List, 사용자정의

Collections 로 정렬하기


// list 선언
List<Integer> intList = Arrays.asList(5,2,5,9,0,5,4,2,1);

Collections.sort(intList); // 오름차순
결과 > 0,1,2,2,4,5,5,5,9

Collections.sort(intList, Collections.reverseOrder()); // 내림차순
결과 > 9,5,5,5,4,2,2,1,0

 

Collecntions.reversOrder() 에 파라미터 값을 넘기면 다양한 옵션으로 정렬할 수 있습니다.

 

 

 

 

List 로 정렬하기


List 정렬은 Java 8 버전이상에서 가능합니다.

 

        // List 선언
        List<String> list = new ArrayList<>(Arrays.asList("C", "A", "B", "a"));
        System.out.println("원본 : " + list);  // [C, A, B, a]
 
        // 오름차순으로 정렬
        list.sort(Comparator.naturalOrder());
        System.out.println("오름차순 : " + list);  // [A, B, C, a]
 
        // 내림차순으로 정렬
        list.sort(Comparator.reverseOrder());
        System.out.println("내림차순 : " + list); // [a, C, B, A]
        
        // 대소문자 구분없이 오름차순 정렬
        list.sort(String.CASE_INSENSITIVE_ORDER);
        System.out.println("대소문자 구분없이 오름차순 : " + list); // [a, A, B, C]
        
        // 대소문자 구분없이 내림차순 정렬
        list.sort(Collections.reverseOrder(String.CASE_INSENSITIVE_ORDER));
        System.out.println("대소문자 구분없이 내림차순 : " + list); // [C, B, a, A]

 

 

 

 

 

사용자 정의 Collections 이용


Collections.sort() 에 두번째 파라미터에 Comparator 인터페이스를 구현하여 커스터마이징 합니다.

 

        List<Integer> intList = Arrays.asList(5,2,5,9,0,5,4,2,1);

        Collections.sort(intList, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
             // 여기에 o1, o2 를 마음대로 커스터마이징 할 수 있음.
             
            
                return o2 - o1; // 내림차순
//                return o1 - o1; // 오름차순
            }
        });
        
        
        // String 정렬 
        List<String> strList = Arrays.asList("A", "C", "B");

        Collections.sort(strList, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.compareTo(o2); // 오름차순 반대시 내림차순
            }
        });