Java有效地组合了多个集合

时间:2013-02-11 13:20:51

标签: java collections merge

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

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不是问题,如果有帮助的话。

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

1 个答案:

答案 0 :(得分:0)

这是使用新Java 8流的2线程:

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

我确定在某个地方潜伏着一条单线,但我还没找到它