如何使用Java 8流将两个或更多不同对象列表的值设置为一个对象?

Piyush Raghuwanshi

我想将for循环更改为main方法中包含的流。

这是我的主要方法

List<Model1> list = new ArrayList<>();
                List<Model2> model = Stream.iterate(0, n -> n + 1).limit(10).map(m -> new Model2(m))
                        .collect(Collectors.toList());
                List<Model2> model2 = Stream.iterate(11, n -> n + 1).limit(10).map(m -> new Model2(m))
                        .collect(Collectors.toList());

                list.add(new Model1("a", model));
                list.add(new Model1("b", model2));


                List<Model3> list3=new ArrayList<>();
                for(Model1 m:list) {
                    for(Model2 m2: m.getModel()) {
                        Model3 m3=new Model3();
                        m3.setStr(m.getS1());
                        m3.setValue(m2.getVal());
                        list3.add(m3);
                    }
                }

                list3.stream().forEach(s-> 
                System.out.println(s.getStr()+"::"+s.getValue()));

以下是我的模特班

public class Model1 {

        private String s1;

        private  List<Model2> model;
        // getter setter
    }

我的下一个模特

 public class Model2 {

        private Integer val;

    //getter setter
    }

我要在其中设置数据的模型

public class Model3 {

        private String str;
        private Integer value;
        // getter setter

    }

我的主要方法的输出将是:

    a::0
    a::1
    a::2
    a::3
    a::4
    a::5
    a::6
    a::7
    a::8
    a::9
    b::11

我想要使​​用Java流的相同输出

哈迪J

您可以这样:

list.stream()
 .flatMap(m->m.getModel().stream().map(m2->new Model3(m.getS1(),m2.getVal())))
 .collect(Collectors.toList()); // or .collect(Collectors.toCollection(ArrayList::new))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java 8将BiFunction应用于两个不同对象的列表

如何将具有唯一字段的两个不同对象列表合并到一个单独的列表中?

使用Java 8流将2个不同对象的列表连接到第三个对象的列表

如何合并两个不同对象的列表?

如何合并两个不同对象的列表?

Java8流-比较两个列表的对象值并将值添加到第一个列表的子对象?

基于java 8中的匹配属性比较两个不同对象类型的列表

如何通过将每个列表中的一个元素组合在一起,将两个不同对象的列表组合为一个列表?

角度怪异:一个对象属性如何更改两个不同对象上的属性?

如何筛选使用Java 8个流两个列表对象?

如何将值从一个列表复制到另一个具有不同对象的列表

使用Java 8 Streams如何使用一个列表获取两个不同的列表

如何从两个不同对象列表中获取不常见对象

如何比较来自不同对象的两个日期值,设置它们的格式并测试是否相等?

Java 8流分组 如果只有一个分组值对象,如何设置字段?

如何使用唯一键将两个或更多对象数组合并为一个

如何以交替顺序排列两个不同对象列表的 XMLArray 项目?

如何使用 Java 8 合并两个不同类型的自定义对象列表

Java 8不同对象类型的两个集合的交集

使用Java流将两个大小相同(类型不同)的列表合并到域对象列表中

使用 Java 8 Stream API 将 2 个不同对象的列表组合成单个对象的列表

在Java中为两个不同的对象创建一个封闭类

如何使用Java对象将两个Spark数据集连接到一个?

比较两个对象列表并通过比较java 8中两个列表的一个属性形成一个新列表

如何将两个平面列表组合成一个嵌套对象

如何在Java 8中迭代对象数组列表并设置为另一个对象列表?

如何获得两个两个元素数据集之间的不同对象?

如何根据DateTime值的接近度将两个列表中的所有对象匹配为两个对

如何使用Java 8中的流API通过同一类的不同对象填充数组列表?