【发布时间】:2019-03-07 17:32:12
【问题描述】:
我在 Java 7 中有以下代码:
List<Integer> idMappers= new ArrayList<>();
//getting information from a Map<String, List<String>>
List<String> ids= idDataStore.lookupId(id);
for (int i = 0; i < ids.size(); i++) {
//getting information from a Map<String, List<Integer>>
List<Integer> mappers= idDataStore.lookupMappers(ids.get(i));
if (mappers!= null) {
for (int j = 0; j < x.size(); j++) {
idMappers.add(mappers.get(j));
}
}
}
我正在尝试将其更改为 Streams
List<Integer> idMappers= new ArrayList<>();
idDataStore.lookupIdMappings(id).forEach(id-> {
idDataStore.lookupSegments(id).forEach(mapper->{
idSegments.add(segment);
});
});
我的问题是idDataStore.lookupSegments(id) 有时会抛出 null,所以我的流中断了。如何在 Stream 中进行空检查?
【问题讨论】:
-
试试这个
idDataStore.lookupIdMappings(id) .stream() .map(i -> idDataStore.lookupSegments(id)) .filter(Objects::nonNull) .forEach(s -> s.forEach(idSegments::add));
标签: java list collections java-8 java-stream