如何为可选流中的列表映射索引 0 处的值

kar*_*vai 5 java java-8

我有以下方法工作正常。我正在尝试完成所有操作并获取该 Optional 流中的值,而无需进行额外的 if 检查。是否可以在索引 0 处映射并获取 Result 对象?请指教谢谢。

public String getData(HttpEntity<Request> request, String endPoint){
    ResponseEntity<Reponse> response = 
        template.exchange(endPoint, HttpMethod.POST, request, Reponse.class);

    List<Result> results = Optional.ofNullable(response)
        .map(ResponseEntity::getBody)
        .map(Response::getQueryResult)
        .map(QueryResult::getResults)
        // getResults is an ArrayList of Result Objects. Could I get the Result Object at index 0 here? 
        // following that I plan to go .map(Result::getValue) here. 
        .orElse(null);
    if(CollectionUtils.isNotEmpty(results)){
        return results.get(0).getValue();
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

And*_*lko 5

return Optional.ofNullable(response)
               .map(ResponseEntity::getBody)
               .map(Response::getQueryResult)
               .map(QueryResult::getResults)
               .filter(CollectionUtils::isNotEmpty)
               .map(list -> list.get(0)) // hate this part :)
               .map(Result::getValue)
               .orElse(null);
Run Code Online (Sandbox Code Playgroud)

如果您喜欢方法引用,并且发现 lambda 很无聊

return Optional.ofNullable(response)
               .map(ResponseEntity::getBody)
               .map(Response::getQueryResult)
               .map(QueryResult::getResults)
               .filter(CollectionUtils::isNotEmpty)
               .map(List::iterator)
               .map(Iterator::next)
               .map(Result::getValue)
               .orElse(null);
Run Code Online (Sandbox Code Playgroud)

我出于教育原因展示它,尽管我喜欢它,但我并不提倡它。