java - 使用 lambda 返回列表中的匹配元素

标签 java lambda

这一切都很好:

// 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);

关于java - 使用 lambda 返回列表中的匹配元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57367506/

相关文章:

java - 如何让 cxf-codegen-plugin 从 jakarta.xml.ws 生成 Webservices?

java - 如何从 XML 中提取一个 boolean 字段?

c# - LINQ Lambdas 何时在 foreach 循环中执行

c# - 表达式树解析,变量最终成为常量

java - Play Framework 表单验证错误

Java/C 三元运算符

python - 为什么在 Python 的 `lambda` 表达式中不允许赋值?

c# - 我如何将 linq 转换为 lambda

python - 如何在for循环中使用lambda?

java - 什么是NullPointerException,我该如何解决?