[英]Copying keys and values from one map to another map [closed]
我正在尝试将一个映射map1的键和值复制到另一个映射map2中。 映射1中的值存储在集合中,映射2应该将map1的值存储在列表中。 每个密钥在两个映射中应映射相同。
我可以遍历map1中的键,然后将这些键添加到map 2中。还可以使用另一个内部for循环将每个集合的元素添加到map2中的列表中,但是我不确定这是否是正确的方法,或者甚至正确。
public static <K, V> void changeSetToList (Map<K, Set<V>> map1, Map<K, List<V>> map2) {
for (Map.entry<K, Set<V>> entry : m1.keys())
for (List<V> l : m1.values())
m2.put(entry.getKey(), l.getValue());
}
我还没有编译或测试它。 无法访问计算机。
您可以遍历Map
并使用新的ArrayList(Collections)构造函数从存储在原始Map中的Set
创建一个List。然后将其放入新Map中。
Map<String, Set<String>> givenMap = new HashMap<String, Set<String>>();
Map<String, List<String>> newMap = new HashMap<String, List<String>>();
Set<String> newSet = new HashSet<String>();
newSet.add("rohit");
givenMap.put("a", newSet);
givenMap.put("b", newSet);
givenMap.put("c", newSet);
for (String str: givenMap.keySet()) {
newMap.put(str, new ArrayList<String>(givenMap.get(str)));
}
for(String str:newMap.keySet()) {
System.out.println(newMap.get(str));
}
如果要使用通用方法,则需要将方法更改为:-
public static <K, V> void changeSetToList (Map<K, Set<V>> givenMap,
Map<K, List<V>> newMap) {
for (K str: givenMap.keySet()) {
newMap.put(str, new ArrayList<V>(givenMap.get(str)));
}
for(K str:newMap.keySet()) {
System.out.println(newMap.get(str));
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.