【问题标题】:How can I do this ForEach using lambda?如何使用 lambda 执行此 ForEach 操作?
【发布时间】:2021-04-02 14:17:42
【问题描述】:

我有这个 foreach 可以将某个类解析为另一个类:

public static List<MyClassParsed> getMyParsed(List<MyClassResponse> responses) {

    List<MyClassParsed> parses = new ArrayList<>();

    for (MyClassResponse response : responses) {

        var parse = MyClassParsed.builder()
                .id(response.getId())
                .name(response.getName())
                .build();

        parses.add(parse);
    }

    return detalhes;
}

我的意思是,我可以使用 responses.stream().foreach(...) 之类的东西吗?

【问题讨论】:

    标签: java java-8 java-11


    【解决方案1】:

    您正在将列表转换为从该列表的元素派生的对象列表,因此map 看起来是一个不错的解决方案。

    public static List<MyClassParsed> getMyParsed(List<MyClassResponse> responses) {
        return responses.stream()
                        .map(r -> 
                             MyClassParsed
                                 .builder()
                                 .id(r.getId())
                                 .name(r.getName())
                                 .build())
                        .collect(Collectors.toList());
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用不同的 lambda 功能将您的列表转换为另一个列表:

      一行:

      List<MyClassParsed> parses = responses.stream().map(response -> MyClassParsed.builder().id(response.getId()).name(response.getName()).build()).collect(Collectors.toList());
      

      方法参考:

      public class Mapper {
          static MyClassParsed map(MyClassResponse response) {
             return MyClassParsed.builder().id(response.getId()).name(response.getName()).build();
          }
          public void getMyParsed(List<MyClassResponse> responses) {
              List<MyClassParsed> parses = responses.stream().map(Mapper::map).collect(Collectors.toList());
          }
      }
      

      函数实例:

       Function<MyClassResponse, MyClassParsed> mapper = response -> MyClassParsed.builder().id(response.getId()).name(response.getName()).build();
       List<MyClassParsed> parses = responses.stream().map(mapper).collect(Collectors.toList());
      

      【讨论】:

        猜你喜欢
        • 2021-04-01
        • 2012-12-25
        • 2017-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-11
        • 2023-03-28
        • 1970-01-01
        相关资源
        最近更新 更多