簡體   English   中英

比較兩個對應於鍵的地圖值

[英]comparing two maps values with correspond to key

我有以下兩個不同的地圖,如下所示。

Map<Integer, List<String>> multimap1 = new HashMap<Integer, List<String>>();
List<String> someList1 = new ArrayList<String>();
someList1.add("abc");
someList1.add("def");
someList1.add("ght");
multimap1.put(1, someList1);

另一個是..

Map<Integer, List<String>> multimap2 = new HashMap<Integer, List<String>>();
List<String> someList = new ArrayList<String>();
someList2.add("abc");
someList2.add("wed");
someList2.add("ght");
multimap2.put(1, someList2);

現在,請告知邏輯,因為我想比較兩個映射的值與對應的鍵,首先我從multimap1的第一個映射中獲取鍵,然后從multimap2的第一個鍵獲取鍵,然后將它們的值進行比較

multimap1       multimap2

1   abc         1  abc

如上所示,我已經獲取了兩個映射的鍵,然后比較了對應於該鍵的值,因此它匹配,因為具有相同值的兩個不同映射都對應於第一個鍵,因此它應該在控制台上打印兩個映射都相同的語句值與鍵對應,如果不是,則應打印兩個地圖具有與鍵對應的不同值,請告知如何實現。

您的聲明有點令人困惑,兩個地圖的鍵1的值都是List。

multimap1       multimap2

1   abc         1  abc

是不正確的,因為這些不是鍵為1的映射值,它只是值的一部分,因為列表中其余字符串也是該值的一部分。

如果要比較兩個列表的值,則取決於它們相等是什么意思。 如果它們必須以相同的順序具有相同的值,則只需檢查兩個列表的索引。 如果它們只需要具有相同的值並且順序無關緊要,則檢查一個元素的所有元素是否都在另一個元素中,反之亦然

如何用番石榴做到這一點:

  1. 使用Sets.symmetricDifference()Sets.difference()查找鍵之間的差異。 Sets.intersection()查找公用密鑰。
  2. 如果對稱差異為空,則遍歷公共密鑰。 如果順序很重要, Sets.difference()列表包裝到HashSetLinkedHashSet並將Sets.difference()應用於包裝的集合。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM