개발/자바

[자바/java] 배열,리스트 정렬 (Comparable, Comparator)

Walon_ 2021. 8. 27. 17:21

 Arrays.sort

- 배열의 숫자, 알파벳, 한글을 오름차순(natural ordering/자연스러운 순서)로 정렬

 

 

※ Collections.sort

- ListCollection일 경우 (ArrayList, LinkecList, Vector 등)

 

 

 

 

Comparable, Comparator

※ Comparable

- 정렬할 class내부에 정의하여 그 규칙에 맞게끔 정렬

 

※ Comparator

- 따로 comparator를 만들어 정렬시 comparator를 바꿔가면서 정렬가능

 

public static class Friend implements Comparable<Friend>{
        private String name;
        private int age;
        
        public Friend(String name, int age) {
            super();
            this.name = name;
            this.age = age;
        }        
        @Override
        public int compareTo(Friend o) {
            return this.age - o.age;
        }    
    }


Collections.sort(friends);  //List
Arrays.sort(friends);  //배열

 

public static class SortFriendByNameInAsc implements Comparator<Friend>{
        @Override
        public int compare(Friend o1, Friend o2) {
            if(o1.x > o2.x){
                return 1;
            }
        }        
    }


Collections.sort(friends, new SortFriendByNameInAsc());

 

 

comparable : https://www.acmicpc.net/source/23811051

comparator : https://www.acmicpc.net/source/23812760

 

 

 

 

 

 

 

 

 

 

============================================================================

 

comparator를 사용과 동시에 정의가능

 

Arrays.sort(arr, (e1,e2)->{
            if(e1.length() > e2.length()){
                return 1;
            }else{
                return -1;
            }
        });