簡體   English   中英

比較鍵與值列表中的Java

[英]Compare keys with llist of values Java

假設TreeMap<String,List> one及其下面的副本,我想將第一個中的所有鍵與第二個中的所有值進行比較。 如果某個鍵的值不匹配,例如AUF_1060589919844_59496和AUF_1421272434570_1781在這種情況下,我想找回該鍵及其值。

{AUF_1060589919844_59496=[AUF_1086686287581_9999,
AUF_1086686329972_10049, AUF_1079023138936_6682], 
AUF_1087981634453_7022=[AUF_1421268533080_1741, AUF_1421268568003_1743],
AUF_1421268533080_1741=[AUF_1421268719761_1776], 
AUF_1421272434570_1781=[AUF_1087981634453_7022]}

上面的副本

    {AUF_1060589919844_59496=[AUF_1086686287581_9999,
AUF_1086686329972_10049, AUF_1079023138936_6682], 
AUF_1087981634453_7022=[AUF_1421268533080_1741, AUF_1421268568003_1743],
AUF_1421268533080_1741=[AUF_1421268719761_1776], 
AUF_1421272434570_1781=[AUF_1087981634453_7022]}

我從您的問題中了解到的是獲取不存在於值中的鍵,並且其值也存在。 我認為沒有必要創建它的副本。 我正在發布代碼段,我認為這一定會對您有所幫助

Map<String, List<String>> map = new HashMap<String, List<String>>(); //Add elements in map Collection<List<String>> list = map.values(); List<String> values = new ArrayList<String>(); for (List<String> listValues : list) { values.addAll(listValues); } for (String key : map.keySet()) { if (!values.contains(key)) { System.out.println("key ---->" + key); System.out.println("Values ------->"); for (String value : map.get(key)) { System.out.println(value); } } }

如果我的假設是正確的,那么您希望所有不是值的鍵;

好吧,這是非常骯臟的方式。

Set<String> keys= new HashSet<String>(one.keySet());  //ensure we don't mess up with the actual keys in the Map

for(List list : one.values()){
 keys.removeAll(list);  //remove all those Keys that are in values
}

// print out keys that are not values
System.out.println(keys);

使用set將使生活變得輕松,因為它不包含重復項,並且我們可以非常快地刪除值(使用removeAll()方法)

暫無
暫無

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

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