Map<Integer, List<String>> mapList = new TreeMap<>();
Map<Integer, Set<String>> mapSet = new TreeMap<>();
Set<String> set = new TreeSet<>();
for (Map.Entry<Integer, List<String>> entry : entriesSortedByValues(mapList)) {
set.addAll(entry.getValue());
mapSet.put(entry.getKey(), set);
}
它不起作用。我想将地图列表复制到地图集。
答案 0 :(得分:4)
您不断为所有键添加和修改相同的对象。
您目前所做的事情可以被视为:
所以要解决这个问题,请在循环的每次迭代中创建一个新的Set。
Map<Integer, List<String>> mapList = new TreeMap<>();
Map<Integer, Set<String>> mapSet = new TreeMap<>();
for (Map.Entry<Integer, List<String>> entry : entriesSortedByValues(mapList)) {
Set<String> set = new TreeSet<>();
set.addAll(entry.getValue());
mapSet.put(entry.getKey(), set);
}
此外,您可以使用将集合作为参数的构造函数。
Map<Integer, List<String>> mapList = new TreeMap<>();
Map<Integer, Set<String>> mapSet = new TreeMap<>();
for (Map.Entry<Integer, List<String>> entry : entriesSortedByValues(mapList)) {
mapSet.put(entry.getKey(), new TreeSet<>(entry.getValue()));
}
答案 1 :(得分:3)
您可以使用HashSet
的构造函数将列表转换为Set,new HashSet<String>(myList);
Map<Integer, List<String>> mapList = new TreeMap<>();
Map<Integer, Set<String>> mapSet = new TreeMap<>();
for (Map.Entry<Integer, List<String>> entry : entriesSortedByValues(mapList)) {
Set<String> set = new HashSet<String>(entry.getValue());
mapSet.put(entry.getKey(), set);
}
答案 2 :(得分:0)
在for循环中添加Set
for (Map.Entry<Integer, List<String>> entry : entriesSortedByValues(mapList)) {
Set<String> set = new TreeSet<>();
set.addAll(entry.getValue());
mapSet.put(entry.getKey(), set);
}