我试图习惯使用lambda表达式,但我经常遇到像这样基本的东西:
public List<Location> findAllAccessByUser(User user) {
return listDao.getAccessList(user).stream()
.filter(list -> findBySubOrgId(list.getOwnerOrg().getId()).isPresent())
.map(list -> findBySubOrgId(list.getOwnerOrg().getId()).get())
.collect(Collectors.toList());
}
此方法
由于findBySubOrgId()返回一个可能不存在的Optional,我想我需要对其进行过滤,以便返回List不包含任何空元素。但后来我重复调用相同的方法,这似乎很浪费。
通常我会将它分配给变量并重复使用,但我无法找到如何使用lambdas进行此操作的参考 - 或者如果它甚至是必要的。
或者我可以在map()表达式中添加一个条件,但我又不知道如何执行此操作并确保删除空值。
正如所写,它完全按照我的预期工作,但我总是试图优化我的代码,并且学习正确的做事方式永远不会伤害。什么是&#34;正确&#34;重写这个的方法?或者这样很好吗?
答案 0 :(得分:2)
var resArray = [Res1, Res2,...];
ResToUse = resArray[i - 1];