我一直坚持了解如何将两个对象合并在一起,不胜感激
目标是防止解析其中一个信息时位于另一页上的属性之一的情况,因此我正在生成一种方法来收集要映射的信息(键(发票编号),并且值将完全收缩对象
public BenettonGroupPackingList combinePackingLists(BenettonGroupPackingList one, BenettonGroupPackingList two) {
}
public Map<String, BenettonGroupPackingList> groupByPackingListInvoiceNumber() {
return groupPackingLists().stream()
.collect(Collectors.toMap(BenettonGroupPackingList::getNumeroInternoNumber,
list -> list, this::combinePackingLists));
}
公共类BenettonGroupPackingList {
private String netWeight;
private String grossWeight;
private String numeroInternoNumber;
答案 0 :(得分:0)
免责声明:您的类的名称有点误导,并且代码似乎不完整。此外,有多种组合对象的方法,在这些情况下,输入和所需输出的示例对解释问题有很大帮助。上面的内容使您很难理解要达到的目标,因此我将尽我所能来回答问题,但是请注意,还有一些工作要做。
假设其中包含列表(这将证明帖子中的java-stream
标签是正确的),而您要做的只是获取一个串联列表,您可以按照以下步骤进行操作:
List combined_list = Stream.of(list_a, list_b).flatMap(Collection::stream).collect(Collectors.toList());
以上内容不会删除任何重复项,因此仅是两个集合的串联。
但是您的课程似乎没有列出,因此将它们组合在一起是一个完全不同的故事。
按照目前的状态,似乎您要合并每个对象的相应属性,同时确保按numeroInternoNumber
对它们进行分组。这样的操作要复杂得多,因此设计算法本质上就是您的工作,因此...我将限制自己的工作范围:
numeroInternoNumber
将订单分组。您可以使用groupingBy
收集器(此处的示例:https://www.baeldung.com/java-groupingby-collector)。这应该给您一个像Map<String, List<BenettonGroupPackingList>>
这样的对象,可以在后续步骤中进行处理netWeight
和grossWeight
属性,选择所需的属性(可能不是空的属性),然后将输出保存到新的{{1} }个对象(例如:BenettonGroupPackingList
)groups.entrySet().stream().map(e -> new BenettonGroupPackingList(e.getKey(), e.getValue().stream().anyMatch(x -> x.getNetWeight() != null ), e.getValue().stream.anyMatch(...)))
个对象的结果集合