0

我有以下几行,是更大功能的一部分:

Collection<String> idSet; //idset != successors.keys()
Map<String, ArrayList> successors; // parameter to larger function
ArrayList<String> result = new ArrayList<String>();
    for (String id: idSet) {
        ArrayList<String> idsuccessors = this.successors.get(id);
        result.addAll(idSuccessors);
      }

我想将映射后继者中的所有值组合到一个集合中。尽管上面的代码有效,但我认为必须有一种更简洁的方法(例如,在 Python 中,我用一条短线实现了它)。

result = set.union(*[set(successors(id)) for id in ids])

请注意,如果有帮助,将 Mapping 的类型从 ArrayList 转换为例如 HashSet 不是问题。

非常感谢任何建议。提前致谢

4

1 回答 1

0

这是使用新的 Java 8 流的 2-liner:

ArrayList<String> result = new ArrayList<>();
successors.values().forEach(result::addAll);

我确定某处潜伏着一条单线,但我还没有找到

于 2015-02-15T19:32:36.190 回答