ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java - 컬렉션 정렬 시 Null safe
    Java 2024. 6. 21. 23:23
    반응형


    자바8부터 도입된 Stream을 이용하면 Collection을 정렬할 수 있다.

     

    Comparator 클래스를 이용해서 쉽게 정렬이 가능하다.

     

    List<Person> list = Arrays.asList(Person.of(30), Person.of(35));
    
    List<Person> sortedList = list.stream()
            .sorted(Comparator.comparing(Person::getAge))
            .collect(toList());

     

    Comparator.comparing() 메서드에 람다식을 넘겨서 age를 기준으로 정렬이 가능하다.

     

    그런데 이 때 Person의 age가 Null인 경우가 발생하면 정렬하는 중에 NPE가 발생한다.

     

    이럴 경우 NullPointerException을 방지하기 위해서 Comparator.nullsFirst(), Comparator.nullsLast()를 사용한다.

     

    List<Person> list = Arrays.asList(Person.of(30), Person.of(null), Person.of(35));
    
    List<Person> sortedList = list.stream()
            .sorted(Comparator.comparing(Person::getAge, Comparator.nullsLast(Comparator.naturalOrder())))
            .collect(toList());

     

    결과는 30, 35, null 로 정렬된다.

     

    이렇게 Comparator.nullsLast()를 사용하면 null인 경우에는 뒤쪽으로 정렬이 된다.

     

    Comparator.nullsFirst()를 사용하면 null인 경우가 제일 앞으로 오게 된다.

     

     

     

     

     
    반응형

    댓글

Designed by Tistory.