当前位置: 首页 > 知识库问答 >
问题:

Java 8 Stream如何用自定义逻辑合并两个大小不相等的列表以挑选重复列表

章涵容
2023-03-14

我有2个地图对象列表。

 "list1": [
    {
      "partyId": "1",
      "accountId": "1",
      "sourceSystem": "1",
    },
    {
      "partyId": "2",
      "accountId": "2",
      "sourceSystem": "2",
    }]
 "list2": [
    {
      "partyId": "3",
      "accountId": "3",
      "sourceSystem": "3",
    },
    {
      "partyId": "1",
      "accountId": "2",
      "sourceSystem": "2",
    }]
 "merged": [
    {
      "partyId": "1",
      "accountId": "1",
      "sourceSystem": "1",
    },
    {
      "partyId": "2",
      "accountId": "2",
      "sourceSystem": "2",
    },
    {
      "partyId": "3",
      "accountId": "3",
      "sourceSystem": "3",
    }]

如何使用Java8 Stream做到这一点?或者唯一的方法是将它们转换成java对象并执行for循环。

共有1个答案

彭鸿畅
2023-03-14

你可以一气呵成,

List<Map<String, String>> resultMap = Stream.concat(mapListOne.stream(), mapListTwo.stream())
    .collect(Collectors.groupingBy(m -> m.get("partyId"), Collectors.toList()))
    .entrySet().stream()
    .map(e -> e.getValue().get(0))
    .collect(Collectors.toList());

这是一个两步计算,首先将每个partyId值的映射的列表作为映射计算,然后获取每个列表上的第一个元素以计算最终结果。

 类似资料:
  • 给定已排序的两个单链表,合并这些列表。 示例: list1: 1 2 3 5 7 list2: 0 4 6 7 10 --- 尽管这个解决方案非常简单,并且有几个不同的问题实现,不管是否使用递归(如下所示http://www.geeksforgeeks.org/merge-two-sorted-linked-lists/见方法3), 我想知道这个实现有多复杂: 如果其中一个列表是空的,只需返回另一

  • 我想把两个列表合并成一个列表列表。反之亦然。我找不到任何工作,我对Python非常陌生 例子: 如何将S拆分回原来的S1和S2?示例:

  • 问题内容: 我有 我想要 问题答案:

  • rank ▲ ✰ vote url 65 357 50 683 url 合并两个列表 怎样合并两个列表? 例如: listone = [1,2,3] listtwo = [4,5,6] 我期待: mergedlist == [1, 2, 3, 4, 5, 6] 在Python中非常容易. mergedlist = listone + listtwo

  • 问题内容: 我有两个列表需要合并,第二个列表忽略了第一个列表的重复项。..有点难以解释,所以让我展示一个代码看起来像什么,以及我想要什么的示例。 您会注意到结果具有第一个列表, 包括 其两个“ 2”值,但是second_list也具有附加的2和5值这一事实并未添加到第一个列表中。 通常,对于这样的事情,我会使用集合,但是first_list上的集合会清除它已经具有的重复值。所以我只是想知道什么是实

  • 我有两列,一列有年份,另一列有月份数据,我正试图从中创建一列(包含年份和月份)。 示例: 我想拥有 我试过了 但它给了我“无法从重复轴重新编制索引”错误。