Java8如何检查空值并获取对象列表?

Java8如何检查空值并获取对象列表?,java,java-8,java-stream,Java,Java 8,Java Stream,下面的代码是用Java编写的,我想在Java8中使用。我该怎么做 方法中包含以下代码: Query query = new Query(); query.fields().include("address"); query.fields().exclude("_id"); List<User> users = mongoTemplate.find(query, User.class); List<Address> addresses = new ArrayList&l

下面的代码是用Java编写的,我想在Java8中使用。我该怎么做

方法中包含以下代码:

Query query = new Query();
query.fields().include("address");
query.fields().exclude("_id");

List<User> users = mongoTemplate.find(query, User.class);

List<Address> addresses = new ArrayList<>();
if(!users.isEmpty()) {
    for (Address address : addresses) {
        addresses.addAll(country.getSubaddress());
    }
}
return address;
Query Query=new Query();
query.fields()。包括(“地址”);
query.fields().exclude(“_id”);
List users=mongoTemplate.find(查询,User.class);
列表地址=新的ArrayList();
如果(!users.isEmpty()){
收件人(地址:地址){
address.addAll(country.getSubaddress());
}
}
回信地址;
在Java8中

List<List<Address>> values = countries.stream().filter(Objects::nonNull).map(x -> x.getAddresses()).collect(Collectors.toList());
List values=countries.stream().filter(Objects::nonNull).map(x->x.getAddresses()).collect(Collectors.toList());

我只想要地址表。我该怎么做?

这是解决问题的一种方法:

List<Address> addresses = Optional.ofNullable(users)
            .orElseGet(Collections::emptyList)
            .stream()
            .filter(Objects::nonNull)
            .flatMap(x -> x.getAddress().stream())
            .collect(Collectors.toList());
列表地址=可选。不可用(用户)
.OrelGet(集合::emptyList)
.stream()
.filter(对象::非空)
.flatMap(x->x.getAddress().stream())
.collect(Collectors.toList());

如何编译(地址:用户)?您可以共享类模型吗?
mongoTemplate.find
是否返回
null
?我不这么认为,而且您的旧循环解决方案也没有检查它的
null
。因此,不要用不必要的
null
-检查来污染代码。只需使用
users.stream()
@Holger-Yes,mongoTemplate.find就可以返回空值或null值,而不是
Optional.ofNullable(users).orelsGet(Collections::emptyList).stream()
。您能提出正确的解决方案吗?为什么是“空”或“空”?它不应该决定一种行为吗?因为在mongo文档中,并非所有用户都有地址,所以查询可能无法获取这些记录的地址,这并不能解释为什么它会返回
null
,而不是空列表。