gpt4 book ai didi

java - 使用 lambda 从 2 个现有对象创建新对象,总结 ArrayList 字段中各种对象的各种值

转载 作者:行者123 更新时间:2023-11-30 10:29:39 25 4
gpt4 key购买 nike

我有这个 bean,MyBean。 MyBean 包含几个复杂对象列表,每个列表又包含简单对象列表,简单对象列表有一个简单的 int 字段 (field1)。

我想做的是采用 2 个 MyBean 对象——除了 SimpleObject.field1 字段中的值外,它们将完全相同——
并使用 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;
}

我对 lambda 没有什么经验,但我希望我可以在这里使用它们。我只是不确定如何。我知道如何使用 lambda 对各种对象的字段中的值求和,但我不知道如何使用这些总和创建新对象,因为它们存在于子对象中。

非常感谢任何帮助!

最佳答案

您可以使用streamflatMap 方法遍历列表并计算sum 例如:

int sum = list1.stream()
.flatMap(co -> co.list1.stream())
.mapToInt(so -> so.field1)
.sum();

这样,您将能够计算列表所有子元素的总和

关于java - 使用 lambda 从 2 个现有对象创建新对象,总结 ArrayList 字段中各种对象的各种值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43962822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com