자기개발/검색한 자료 정리

Java Stream sorted 정렬(오름차순 정렬, 내림차순 정렬)

실버블렛 2022. 7. 30. 18:22
반응형

Java Stream sorted 정렬

설명

  • 자바에서 리스트 정렬을 하는 방법이 많은데 Stream sorted를 이용하면 쉽게 리스트를 정렬할 수 있다.

정렬 예제

기본 sorted 사용

  • 오름차순 정렬
var numbers = List.of(5, 2, 3, 9, 4);
numbers.stream()
       .sorted()
       .collect(Collectors.toList());
  • 내림차순 정렬
var numbers = List.of(5, 2, 3, 9, 4);
numbers.stream()
       .sorted(Comparator.reverseOrder())
       .collect(Collectors.toList());

객체 리스트 정렬 Comparator.comparing 사용

  • 오름차순
var StudentList = List.of(
            new Student(4, "tae", 100, 100, 100),
            new Student(5, "lob", 75, 75, 100),
            new Student(1, "hong", 75, 90, 80),
            new Student(2, "sujin", 50, 90, 100),
            new Student(3, "kate", 90, 75, 75));

StudentList.stream()
       .sorted(Comparator.comparing(Student::getNo))
       .collect(Collectors.toList());            
  • 내림차순
var StudentList = List.of(
            new Student(4, "tae", 100, 100, 100),
            new Student(5, "lob", 75, 75, 100),
            new Student(1, "hong", 75, 90, 80),
            new Student(2, "sujin", 50, 90, 100),
            new Student(3, "kate", 90, 75, 75));

StudentList.stream()
       .sorted(Comparator.comparing(Student::getNo).reversed())
       .collect(Collectors.toList());            

객체 리스트 정렬 (a, b) -> b.mathScore() - a.mathScore() 사용

  • 오름차순
var StudentList = List.of(
            new Student(4, "tae", 100, 100, 100),
            new Student(5, "lob", 75, 75, 100),
            new Student(1, "hong", 75, 90, 80),
            new Student(2, "sujin", 50, 90, 100),
            new Student(3, "kate", 90, 75, 75));

StudentList.stream()
       .sorted((a, b) -> a.mathScore() - b.mathScore())
       .collect(Collectors.toList());            
  • 내림차순
var StudentList = List.of(
            new Student(4, "tae", 100, 100, 100),
            new Student(5, "lob", 75, 75, 100),
            new Student(1, "hong", 75, 90, 80),
            new Student(2, "sujin", 50, 90, 100),
            new Student(3, "kate", 90, 75, 75));

StudentList.stream()
       .sorted((a, b) -> b.mathScore() - a.mathScore())
       .collect(Collectors.toList());            

객체 리스트 정렬 두가지 이상 정렬 기준으로 정렬

  • 오름차순, 오름차순
var StudentList = List.of(
            new Student(4, "tae", 100, 100, 100),
            new Student(5, "lob", 75, 75, 100),
            new Student(1, "hong", 75, 90, 80),
            new Student(2, "sujin", 50, 90, 100),
            new Student(3, "kate", 90, 75, 75));

StudentList.stream()
       .sorted(Comparator.comparing(Student::getNo)
                          .thenComparing(Student::getName))
       .collect(Collectors.toList());            
  • 오름차순, 내림차순
var StudentList = List.of(
            new Student(4, "tae", 100, 100, 100),
            new Student(5, "lob", 75, 75, 100),
            new Student(1, "hong", 75, 90, 80),
            new Student(2, "sujin", 50, 90, 100),
            new Student(3, "kate", 90, 75, 75));

StudentList.stream()
       .sorted(Comparator.comparing(Student::getNo)
                          .thenComparing(Student::getName, Comparator.reverseOrder()))
       .collect(Collectors.toList());            

#Java 정렬 #Stream 정렬 #Java 오름차순 정렬 #Java 내림차순 정렬 #Java 두가지 조건 정렬

반응형