2015-02-17 4 views
1

Предполагая TreeMap<String,List> one и его копию ниже, Я хочу сравнить все ключи в первом, со всеми значениями во втором. Если ключ не соответствует значениям, как AUF_1060589919844_59496 и AUF_1421272434570_1781, в этом случае я хочу вернуть ключ и его значения.Сравнение ключей со списком значений Java

{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]} 
+0

могли бы вы перефразировать то, что вы пытаетесь сказать, я не совсем уверен, что вы хотите здесь – nafas

+0

я думаю, что он хочет иметь ключ и значения, если ключ от первой карты не является значением во второй карте. – Nfear

+0

да, это то, что я пытаюсь получить. ключи и их значения, если ключ не является самим значением. – Iman

ответ

1

То, что я понял из вашей проблемы, чтобы получить ключ которых нет в значениях и их значения. Я думаю, что нет необходимости создавать его копию. Я вывешивать фрагмент кода, я думаю, что это, безусловно, поможет вам

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); } } }

0

Если мое предположение верно вы хотите, чтобы все ключи, которые не являются значения;

хорошо это очень грязный способ сделать это.

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); 

Используя набор сделает жизнь легко, так как он не содержит дубликатов, и мы можем удалить значения очень QUICKY (используя метод RemoveAll())

Смежные вопросы