Я считаю, что вы пытаетесь объединить отображения из двух или более Map
. Если это так, вы делаете это с использованием Map#putAll()
без привлечения List
s, если на самом деле не хранятся Map
. Это кажется маловероятным.
Map<String, String> map1 = new HashMap<String, String>();
map1.put("referrer", "abc.com");
Map<String, String> map2 = new HashMap<String, String>();
map2.put("category", "def.com");
Map<String, String> map3 = new HashMap<String, String>();
map3.putAll(map1);
map3.putAll(map2);
for (Map.Entry<String, String> mapping : map3.entrySet()) {
System.out.println(mapping.getKey() + " = " + mapping.getValue());
}
Выход:
category = def.com
referrer = abc.com
Если вы на самом деле получить ваши
Map
S в
List
, просто перебрать его и использовать
putAll()
, как показано выше, для каждого
Map
. Если есть несколько таких
List
s, повторите цикл
Iterator
для каждого из них.
List<Map<String,String>> listOfMaps = new ArrayList<Map<String,String>>();
// initialize map1, map2, map3 same as above
listOfMaps.add(map1);
listOfMaps.add(map2);
for (Iterator<Map<String, String>> iterator =
listOfMaps.iterator(); iterator.hasNext();) {
map3.putAll(iterator.next());
}
for (Map.Entry<String, String> mapping : map3.entrySet()) {
System.out.println(mapping.getKey() + " = " + mapping.getValue());
}
Каковы правила для "слияния"? Что означает «искаженный»? – chrylis
Можете ли вы определить, что искажается? – JHS