java使用lambdas从2个现有对象创建新对象,将ArrayList字段中不同对象的各种值相加
我有这个豆子,我的豆子。MyBean包含两个ComplexObject列表,每个列表都有SimpleObject列表,其中有一个简单的int字段(field1)
我想做的是取2个MyBean对象——除了SimpleObject中的值之外,它们完全相同。字段1字段--
使用lambdas/mapTo/reduce/whatever,对每个int字段(field1)求和,并用新的和创建一个新的MyBean,但按原样维护其余字段(列表)
我的对象如下所示:
public class MyBean {
private ArrayList<ComplexObject1> list1 = new ArrayList<>();
private ArrayList<ComplexObject2> list2 = new ArrayList<>();
}
public class ComplexObject1 {
private ArrayList<SimpleObject1> list1 = new ArrayList<>();
}
public class ComplexObject2 {
private ArrayList<SimpleObject1> list1 = new ArrayList<>();
}
public class SimpleObject1 {
private int field1;
}
public class SimpleObject2 {
private int field1;
}
我对lambdas几乎没有经验,但我希望我能在这里使用它们。我只是不知道该怎么做。我知道如何在不同对象的字段中使用lambdas求和值,但我不知道如何使用这些求和创建新对象,因为它们位于子对象中
非常感谢任何帮助
# 1 楼答案
您的数据模型基本上与
List<List<Integer>>
相同。所以,如果我理解正确的话,你想做一个这样的新列表,将另外两个列表的内部列表的元素相加测试数据:
新的列表将是
list3
:现在包含
[[11, 22, 33], [44, 55, 66, 77]]
我将把它留给你们,让你们根据
List<ComplexObject>
和List<SimpleObject>
的情况来重写无法阅读的“streamy”解决方案:
这将产生与第一个解决方案相同的结果