java/java

[Java] 다중 조건 정렬

danuri 2021. 8. 29. 05:41

정렬할 객체 클래스

 

@Getter
@AllArgsConstructor
class Student {
    int num;
    String name;
    String address;
}

 

getter 메소드를 만들어서 그 값을 기준으로 정렬한다. 추가 기준은 thenComparing 메소드를 사용한다.

기준이 복잡하면 Comparator 객체를 하나 만들어서 인자로 던져주면 된다. 깔끔한 코드가 만들어진다.

List<Student> list = new ArrayList<>();
Student s1 = new Student(11001244, "아무개", "서울시 금천구");
Student s2 = new Student(25109435, "김김김", "서울시 중랑구");
Student s3 = new Student(11005338, "사이다", "서울시 은평구");
list.add(s1);
list.add(s2);
list.add(s3);

//모두 오름차순 정렬
list.sort(Comparator.comparing(Student::getNum).thenComparing(Student::getName)
        .thenComparing(Student::getAddress));
 
//이름만 내림차순         
Comparator<Student> reverse = Comparator.comparing(Student::getName).reversed();
list.sort(Comparator.comparing(Student::getNum).thenComparing(reverse)
        .thenComparing(Student::getAddress));

 

출처: https://chickenpaella.tistory.com/24