当前位置: 首页 > 知识库问答 >
问题:

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

盛跃
2023-03-14

我有下面的方法,这是有效的。我试图完成所有的事情,并获得可选流中的值,而不必执行额外的if检查。是否可以映射并在索引0处获取结果对象?请指教,谢谢。

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;
}

共有1个答案

邹桐
2023-03-14
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);

如果您是方法引用的粉丝,并且发现lambdas很无聊

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

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

 类似资料:
  • 如何从字符串列表中获取映射,其中索引是键,字符串是值? 如果我有这样的名单 我想要一张< code >地图 当我执行以下操作时,我得到一个错误 错误 所需类型:int提供:Object 当我将其转换为int或Integer时 我明白了 收集(java.util.function.Supplierjava.util.function.ObjIntConsumerjava.util.function.

  • 我正在尝试学习如何使用Java 8的集合,我想知道是否有一种方法将我的列表转换成一个地图使用Java流。 我想知道如何使用流将上面的列表创建到一个映射中。我知道如何将foreach etc与puts一起使用,但我只是想知道是否有更优雅的方法使用流构建映射。(我知道下面的语法不正确,我是流的新手,不知道怎么写) 目标是代表以下内容。

  • 我有一个实体,看起来像这样: 输入数据是一个

  • 问题内容: 有一个字符串列表,我需要构造一个有效地成对的对象列表。目前,我有这样的代码使用谷歌收藏: 我想使用Java 8流来做到这一点。如果没有索引,我可以这样做: 要获取索引,我将必须执行以下操作: 但是,文档说映射功能应该是无状态的,但实际上是其状态。 有没有办法将顺序流的元素映射到它们在流中的位置? 问题答案: 您可以执行以下操作: 但是,根据列表的基础实现,它可能效率不高。您可以从中获取

  • 我已经创建了一种计算字母表中每个字符的方法。我正在学习流(函数式编程),并尝试尽可能经常地使用它们,但我不知道在这种情况下该怎么做:

  • 我有个问题。我在enter中得到了一个csv,其值如下: 该文件的名称类似于:AB01_TEST_ABDC_YYYYMMDd.csv 我需要把它们放到一张地图上,就像: Bar是csv中一行的bean,Foo是由Bar的一些元素创建的bean 现在,我成功地通过CSV的第一列值将列表拆分为一个映射。这给了: 我是这样做的: baz必须被csv的第一列和每个第一列值的行的itération拆分。因为