java将两个对象合并为一个对象
我一直在理解如何将两个物体合并在一起,请解释
目标是防止在解析另一个页面上的信息时,另一个页面上的一个属性出现这种情况,所以我正在生成一个方法,该方法收集到映射(key(invoice number))和值将是完全收缩的对象
public BenettonGroupPackingList combinePackingLists(BenettonGroupPackingList one, BenettonGroupPackingList two) {
}
public Map<String, BenettonGroupPackingList> groupByPackingListInvoiceNumber() {
return groupPackingLists().stream()
.collect(Collectors.toMap(BenettonGroupPackingList::getNumeroInternoNumber,
list -> list, this::combinePackingLists));
}
public class BenettonGroupPackingList {
private String netWeight;
private String grossWeight;
private String numeroInternoNumber;
# 1 楼答案
免责声明:您的类名称有点误导,代码似乎不完整。此外,有多种方法可以组合对象,在这些情况下,输入和所需输出的示例可以很好地解释问题。以上这些让我很难理解你想要达到的目标,所以我会尽我所能回答你,但要知道你还有一些工作要做
假设涉及到列表(这将证明帖子中的
java-stream
标记是正确的),并且您所要做的就是获得一个连接的列表,您可以按如下方式进行:上述内容不会删除任何副本,因此只是两个集合的串联
然而,你的课程看起来并不是列表,所以把它们结合起来就完全不同了。 目前的情况是,似乎您希望合并每个对象的相应属性,同时确保它们按
numeroInternoNumber
分组。这样的操作要复杂得多,设计算法基本上是你的工作,所以。。。我将仅限于大致地给大家提供以下步骤:numeroInternoNumber
将订单分组。您可以使用groupingBy
收集器(示例:https://www.baeldung.com/java-groupingby-collector)。这将为您提供一个类似Map<String, List<BenettonGroupPackingList>>
的对象,以便在后续步骤中使用netWeight
和grossWeight
属性,选择所需的属性(可能不是空的),将输出保存在新的BenettonGroupPackingList
对象中(例如:groups.entrySet().stream().map(e -> new BenettonGroupPackingList(e.getKey(), e.getValue().stream().anyMatch(x -> x.getNetWeight() != null ), e.getValue().stream.anyMatch(...)))
)BenettonGroupPackingList
对象的结果集合