gpt4 book ai didi

java - 将两个对象合并为一个对象

转载 作者:行者123 更新时间:2023-12-01 19:25:02 29 4
gpt4 key购买 nike

我一直在理解如何将两个对象合并在一起,希望得到解释

目标是防止在解析来自一个页面的信息时其中一个属性位于另一页面上的情况,因此我正在生成收集映射的方法(键(发票号码)和值将是完全收缩的对象

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;

最佳答案

免责声明:您的类名称有点误导,并且代码似乎不完整。此外,组合对象的方法有多种,在这些情况下,输入和所需输出的示例可以很好地解释问题。上述内容让人很难理解您想要实现的目标,因此我将尽我所能回答,但请注意,您将需要做一些工作。

<小时/>

假设涉及列表(这将证明帖子中的 java-stream 标签是合理的),并且您所做的只是获取串联列表,您可以按如下方式继续:

List combined_list = Stream.of(list_a, list_b).flatMap(Collection::stream).collect(Collectors.toList());

上面不会删除任何重复项,因此只是两个集合的串联。

<小时/>

但是,您的类(class)似乎不是列表,因此将它们组合起来是一个完全不同的故事。就目前而言,您似乎想要合并每个对象的相应属性,同时确保它们按 numeroInternoNumber 分组。 。此类操作要复杂得多,并且设计算法本质上是您的工作,因此...我将限制自己广泛地向您提供要遵循的步骤:

  1. numeroInternoNumber 将订单分组在一起。您可以使用 groupingBy收集器(此处示例: https://www.baeldung.com/java-groupingby-collector )。这应该给你一个像 Map<String, List<BenettonGroupPackingList>> 这样的对象在后续步骤中进行
  2. 对于每个组,迭代组内的对象,检查 netWeightgrossWeight属性,选择所需的属性(可能不为空),将输出保存在 new BenettonGroupPackingList 中对象(例如:groups.entrySet().stream().map(e -> new BenettonGroupPackingList(e.getKey(), e.getValue().stream().anyMatch(x -> x.getNetWeight() != null ), e.getValue().stream.anyMatch(...))))
  3. 输出 BenettonGroupPackingList 的结果集合对象

关于java - 将两个对象合并为一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59319611/

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