728x90
Java List 객체에서 null인 항목 삭제하기
| 문제 상황
DB에서 List 를 꺼내왔는데 해당 컬럼에 null 이 포함되어 있어 정상적으로 코드가 실행되지 않는 문제가 발생
| 해결방법
List null 이 있는 경우 null인 항목이 제거된 새로운 List 를 만들어 실행
방법 1) List.remove()
List를 null이 없을때까지 반복문을 돌려가며 지우기
List<String> list = new ArrayList(Arrays.asList("a", null, "c", "d", null));
while(list.remove(null)){
}
list.remove() 를 실행하면 null 이 포함된 첫번쨰 항목을 제거한 후 true를 리턴한다.
모든 null 항목을 처리하기 위하여 while 문에 넣어 실행하였다.
null값이 제거되면 반복문이 종료된다.
방법 2) List.removeAll()
List의 null이 포함된 항목을 한번에 지우기
List<String> list = new ArrayList(Arrays.asList("a", null, "c","d",null));
list.removeAll(Collections.singletonList(null));
removeAll 함수에서는 파라미터로 입력된 리스트에 포함된 항목들을 제거한다.
Collections.singletonList()를 통해 단일 요소를 만들 수 있다.
Collections.singletonList(null) 이 Arrays.asList(null) 과 같은 역할을 하는 것.
따라서 저렇게 사용하면 null이 포함되어있는 항목들을 제거해주므로 반복문을 사용하지 않아도 됩니다.
방법 3) Iterator
List<String> list = new ArrayList(Arrays.asList("a", null, "c","d",null));
Iterator<String> it = list.iterator();
while (it.hasNext()) {
if (it.next() == null) {
it.remove();
}
}
iterator를 이용하여 List의 값을 순회하며 null 인경우 삭제하는 로직이다.
| 해결
이 방법들 중에서 가장 짧게 코드로 구현할 수 있는 두번째 방법을 이용하여 개발을 진행하였다.
반응형
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
[JAVA] SimpleDateFormat 날짜 String 데이터 형식 '요일' 한글로 출력하기 (0) | 2021.09.29 |
---|---|
[JAVA] String -> LocalDate 날짜 형식 변환하여 두 날짜 간 일 수 차이 구하기(Period 이용) (0) | 2021.09.07 |
[JPA] Native Query 이용하여 테이블 여러 개 union 하고 Paging 처리하여 보여주기 (1) | 2021.07.23 |
[Lombok] Spring Boot 생성자 어노테이션 비교 정리 (0) | 2021.07.07 |
[SpringBoot] 지정 시간에 배치 @Scheduled cron 속성 세팅 방법 (0) | 2021.06.29 |