简体   繁体   English

使用 Java Stream API 使用声明式方法重写命令式 For 循环

[英]Rewrite Imperative For Loop With Declarative Approach using Java Stream API

I have list of http query params in NamveValuePair format and a WebTarget ( javax/ws/rs/client/WebTarget.java ).我有一个NamveValuePair格式的 http 查询参数列表和一个WebTargetjavax/ws/rs/client/WebTarget.java )。 Then I am simply attaching those query params to WebTarget one by one using imperative approach.然后,我只是使用命令式方法将这些查询参数一一附加到WebTarget

I know that it's easy to apply stream when all the elements are in the data type.我知道当所有元素都在数据类型中时,应用 stream 很容易。 But I failed to apply the same solution when they are not.但是当他们不是时,我没有应用相同的解决方案。

This is the code I wan to rewrite using Java Streams API这是我想使用 Java 流 API 重写的代码


 public WebTarget attachQueryParams(List<NameValuePair> queryParams, WebTarget webTarget) {

    for (NameValuePair param : queryParams) {
      webTarget = webTarget.queryParam(param.getName(), param.getValue());
    }
    return webTarget;
  }

I tried to rewrite it using stream reduce function as follows with no luck so far:我尝试使用 stream 重写它, reduce function 如下,到目前为止没有运气:

queryParams.stream().reduce(webTarget,((webTarget1, pair) -> webTarget1.queryParam(pair.getName(),pair.getValue())))

You can try something like this:你可以尝试这样的事情:

queryParams.stream()
        .reduce(webTarget,
                (webTarget1, pair) -> webTarget1.queryParam(pair.getName(),pair.getValue()),
                (v1, v2) -> v1);

Why you need third parameter you can find out here为什么你需要第三个参数,你可以在这里找到

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用 Java Stream API 以声明性方式重写创建和填充 Map 的命令式代码 - Rewrite imperative code of creating and populating Map in a declarative way using Java Stream API 将 for 循环重写为 Java 8 Stream - Rewrite for loop as Java 8 Stream Java如何成为一种“命令式”编程语言而不是一种“声明式”编程语言? - How is Java an 'imperative' programming language and not a 'declarative' one? 是否可以使用 Java Stream api 重写具有 Rest-Assured 请求尝试的 WHILE 循环 - Is it possible to rewrite WHILE loop with Rest-Assured requests attempts using Java Stream api 使用Lightweight-Stream-API重写java 8方法以用于api 21 - Rewrite java 8 method with Lightweight-Stream-API for using for api 21 使用声明性方法来移动 ArrayList 元素,而不是使用循环 - Use declarative approach to shift ArrayList elements instead of using a loop 如何使用filter和map等Stream API方法重写一个Java程序? - How to rewrite a Java program using Stream API methods, such as filter and map? Java Stream 在单循环中以声明方式分别按多个字段分组 - Java Stream Grouping by multiple fields individually in declarative way in single loop 如何使用stream api重写它 - How to rewrite it using stream api RxJava:使用反应式方法处理命令式任务 - RxJava: process imperative task using reactive approach
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM