본문 바로가기

개발공부

[ Java Spring ] List 정렬하기

Comparable 인터페이스

Comparable은 compareTo 메서드 하나만 가지고 있는 인터페이스이다. 기본적으로 들어온 파라미터보다 작은 경우 음수, 같은 경우 0, 큰 경우 양수의 값을 리턴한다. 필요에 따라 인터페이스를 상속 후 재정의해서 사용할 수 있다.

 

public interface Comparable<T> {
    public int compareTo(T o);
}

실제 예시

Story 클래스가 Comparable 인터페이스를 상속하고 compareTo를 멤버변수 view의 크기에 따라 정렬하도록 재정의 했다.

 

Class Story implements Comparable<Story> {
    String content;
    int view;
    
    
    @Override
    public int compareTo(Story o) {
        return Integer.compare(this.view, o.view);
    }
}

 

Story 리스트를 정렬하면 내부에 재정의한 compareTo를 통해 동작한다.

 

public class Application {

    public static void main(String[] args) {
        List<Story> storys = new List<Story>()
        storys.add(new Story("new story", 3))
        storys.add(new Story("old story", 0))
        storys.add(new Story("yesterday story", 2))
        
        List<Story> sortedStorys = storys.stream().sorted().toList()
    }
}