Java8如何检查空值并获取对象列表?
下面的代码是用Java编写的,我想在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
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
,而不是空列表。