繁体   English   中英

需要有关Java 1.8可选地图的帮助

[英]Need help on Java 1.8 Optional with map

我想检查字符串对象,如果存在则返回一个对象,否则返回另一个。

条件执行时,它不返回,并且继续执行其他操作。

return Optional.of(where.getObject()).filter(f -> f.isPresent()).map(str -> {
    System.out.println("Value here is str" + str.get());
    return getPredicateByOption(joinMap.get(str.get()), where, builder, null);
}).orElse(getPredicateByOption(null, where, builder, root));

我尝试替换以下if条件:

if (!Optional.empty().equals(where.getObject())) 
     return getPredicateByOption(null, where, builder, root); 
return getPredicateByOption(joinMap.get(where.getObject().get()), where, builder, null);

where.getObject()的返回类型为Optional<String>

if条件可以通过以下方式替换:

return getPredicateByOption(where.getObject().map(joinMap::get).orElse(null), 
                            where, builder, 
                            where.getObject().isPresent() ? null : root);

我假设where.getObject()返回一个Optional<String> ,它保存来自joinMap映射的键。 请注意,即使where.getObject返回非空可选,但joinMap缺少相应的字符串,您仍将获得正确的结果(传递给getPredicateByOption第一个参数将为null。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM