List의 요소가 null일 때

목록 설명

List<Integer> list = List.of(23,46,24,68,null); //NullPointerException Error

먼저 List.of를 사용하여 숫자 예제로 목록을 만들었습니다.

NullPoint 오류가 계속 발생하여 확인했습니다. List.of() 메소드는 목록은 null 값을 포함할 수 없습니다…

null 값을 포함하는 예제 목록을 생성하려는 경우 배열.asList()사용해야

List<Integer> list = Arrays.asList(23,46,24,68,null);

1) 삼항 연산자를 사용한 방법

list.stream()
	.map(i->i==null?0:i)
	.forEach(System.out::println);

2) 선택적 개체가 있는 메서드

– 값이 있는 값만 출력하고 싶은 경우

list.stream()
	.map(Optional::ofNullable)//Optional 객체로 변환
	.forEach(e-> e.ifPresent(System.out::println));

– 값이 null인 경우 다른 값으로 대체합니다.

ist.stream()
	.map(Optional::ofNullable)//Optional 객체로 변환
	.forEach(e->System.out.println(e.orElse(0)));

ofNullable로 선택적 개체를 생성하면 null 값이 올 수 있음을 나타냅니다.

null 값을 만나면 of를 사용한 구성은 실패하므로 가능할 때마다 ofNullable을 사용하여 구성하는 것이 좋습니다.

선택적 객체의 메소드 중 orElse 메소드는 값이 null이면 대체할 값을 반환하고, 그렇지 않으면 원래 값을 반환합니다.

list.stream()
      .forEach(e -> System.out.println(
            Optional.ofNullable(e).orElse(0)));

위 식에서처럼 forEach에서 한번에 모든 것을 처리하는 방법도 있습니다.

3) Objects 클래스의 nonNull 메서드 사용

list.stream()
	.filter(Objects::nonNull)//null값이 아닌것만
	.forEach(System.out::println);

개체 nonNull 메서드는 값이 null이 아니면 true를 반환하고 null이면 false를 반환합니다.

따라서 스트림에 부울형 함수인 필터를 사용하면 참 값만 걸러진다.

forEach로 인쇄할 수 있습니다.