-
Java - 컬렉션 정렬 시 Null safeJava 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인 경우가 제일 앞으로 오게 된다.
반응형'Java' 카테고리의 다른 글
Java - ArrayList addAll과 add의 차이점 (0) 2024.11.19 Java - Set example code 사용법 (0) 2024.04.01 Java - ArrayList 초기화 (0) 2024.03.26 Java - int를 String으로 변환하기 (0) 2024.03.25 Java - LocalDateTime custom Serializer Deserializer (0) 2023.09.19