java - 使用 lambdas 返回列表中的匹配元素
问题描述
这很好用:
// ActorDao
public Optional<Actor> read(long id) {
return Optional.ofNullable(actors.get((int) id));
}
public List<Actor> readAll() {
// Return a list of actors from db
}
// Demo
public static Actor getActor(String firstName, String lastName) {
Dao<Actor> actorDao = new ActorDao();
long id = 0;
for (Actor actor : actorDao.readAll()) {
if (firstName.equalsIgnoreCase(actor.getFirstName()) && lastName.equalsIgnoreCase(actor.getLastName())) {
id = actor.getId() - 1; // actor_id in db starts at 1
return actorDao.read(id).get();
}
}
return null;
}
Java8+ 中更优雅的方式是什么?
解决方案
return actorDao.readAll()
.stream()
.filter(actor -> firstName.equalsIgnoreCase(actor.getFirstName()))
.filter(actor -> lastName.equalsIgnoreCase(actor.getLastName()))
.map(actor -> actorDao.read(actor.getId() - 1).get())
.findFirst()
.orElse(null);
推荐阅读
- docker - 我的 docker-compose.yml 文件应该如何将 HAProxy 与 Heroku 和 Docker 一起使用?
- logging - 如何设置 Caddyfile 日志格式?
- python - 在 python 中调用 CNBC 的后端 API
- r - 是否有一个 R 函数或 dplyr 函数,您可以在其中分配值而无需替换?
- javascript - 如何按条件将对象从一个数组移动到另一个数组?
- amazon-web-services - 从我的家庭网络连接到我的 AWS-EC2 实例时,SSH 连接超时。但是从我的工作网络连接时它可以工作
- syntax - 使用 BNFC 确定命题逻辑的基本语言(语法错误)
- python - Python将字符串作为参数发送给函数
- python - 使用 Cnn 和 Lstm 提取图像字幕生成器的特征?
- django - 如何从 Profile 模型中获取图像到我的 Post 模型中