我有一个MultiValueMap<Integer, Path>
,我试图从[打印出于此问题的目的]中使用相同的密钥将所有路径放入地图中。< / p>
这是我目前的解决方案:
MultiValueMap<Integer, Path> duplicates = duplicateFinder.getDuplicates();
for (Map.Entry<Integer, Object> entry: duplicates.entrySet()) {
final Integer key = entry.getKey();
final Object obj = entry.getValue();
for (Object o: (LinkedList)((ArrayList)entry.getValue()).get(0))
System.out.println(o);
System.out.println();
}
我觉得我的解决方案很危险(施法和幻数0)并且想要避免它。 如何以更可读/更安全的方式实现预期结果?
答案 0 :(得分:4)
条目集似乎是以不幸的签名声明的。但你可以改为重复密钥,并为每个密钥调用getCollection
:
for (Integer key : duplicates.keySet()) {
Collection<Path> paths = duplicates.getCollection(key);
System.out.println("Paths for " + key);
for (Path path : paths) {
System.out.println(" " + path);
}
System.out.println();
}
(请注意,番石榴Multimap
会允许您使用duplicates.asMap().entrySet()
,而每个条目都会有Collection<V>
作为值...)