사용자 정의 객체 타입의 List를 정렬하는 법

강창민·2022년 5월 21일
0

알고리즘 문제를 풀다 보면, List의 type을 내가 정의한 객체로 하고 싶을 때가 있다. 단순히, Integer 또는 String type을 사용한다면 list.sort() 메소드를 쓰면 되지만, 내가 정의한 객체 내부의 특정 필드를 기준으로 정렬하고 싶을 때는 다른 방법을 써야 한다.

- compareTo 이용하기

Collections.sort()를 구현할 때, 사용자가 Comparable 인터페이스 내부의 compareTo 메소드를 @Override 한다면, 가능하다.

🥕방법

class Music implements Comparable<Music>{
    int index = 0;
    int plays = 0;
    
    Music(int idx, int play){
        index = idx;
        plays = play;
    }
    
    @Override
    public int compareTo(Music music) {
    if (music.plays < plays) {
    	return 1;
    } 
    else if (music.plays > plays) {
    	return -1;
    }
    	return 0;
    }

}

ArrayList <Music> list = new ArrayList<>();

list.add(new Music(0, 500))
list.add(new Music(3, 800))
list.add(new Music(2, 1300))

Collections.sort(list) //오름차순으로 정렬
Collections.sort(list, Collections.reverseOrder()) //내림차순으로 정렬.



다음과 같이 구현하면 객체를 기준으로 List를 정렬할 수 있다. 자주 사용 될 수 있으므로 까먹지 말자!

profile
오늘 그것을 할 수 없다면, 대체 무슨 근거로 내일 그것을 할 수 있다고 생각하는가?

0개의 댓글