3

我有一个MultiValueMap<Integer, Path>我试图从中得到[打印这个问题的目的]所有使用相同键放在地图中的路径。

这是我目前的解决方案:

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)并且想避免它。如何以更具可读性/安全性的方式实现预期结果?

4

1 回答 1

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>作为值......)

于 2015-04-01T18:57:45.437 回答