Java Stream API如何改进表达式

ItF*_*eak 6 java list java-8 java-stream

我有以下代码:

public List<Entry> getEntriesForUserId(int userId) {
    User u = DataBaseConnector
        .getAllUsers()
        .stream()
        .filter(user -> user.getUserId() == userId)
        .findFirst()
        .orElse(new User(-1, "Error");
    return u.getEntries();
}
Run Code Online (Sandbox Code Playgroud)

getEntries()返回一个List<Entry>.

如何将return语句添加到此lambda表达式中?有点像 .map(User::getEntries)

S.K*_*.K. 6

你不需要lambda来返回列表,你可以说:

public List<Entry> getEntriesForUserId(int userId) {
    return DataBaseConnector
             .getAllUsers()
             .stream()
             .filter(user -> user.getUserId() == userId)
             .findFirst()
             .orElse(new User(-1, "Error")
             .getEntries();
}
Run Code Online (Sandbox Code Playgroud)