面试题答案
一键面试- 处理方式:
- 在进行流操作前,先对可能为空的集合进行判空处理。如果集合为空,直接返回一个空流,这样后续的流操作就不会因为空指针而抛出异常。
- 代码示例:
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class StreamNullPointerHandling {
public static void main(String[] args) {
List<String> list = null;
List<String> result = list == null? new ArrayList<>() : list.stream()
.filter(str -> str != null)
.map(String::toUpperCase)
.collect(Collectors.toList());
System.out.println(result);
}
}
在上述代码中,首先对list
进行判空,如果list
为空,就返回一个空的ArrayList
。如果list
不为空,则进行正常的流操作,在filter
中还对集合元素进行了空值过滤,避免map
操作时因元素为空而抛出空指针异常。