0
我有如下的更大的功能,部分:的Java结合多个集合有效
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])
请注意,将映射从ArrayList类型转换为例如HashSet应该没有问题,应该有帮助。
任何意见是非常感谢。在此先感谢
我不认为有一种方法可以使它更短,除非你使用一个库(如番石榴),它可能会有一些静态方法来做到这一点。 – assylias 2013-02-11 13:26:33
使用番石榴MultiMap而不是实现自己的。它带有一个values()方法。如果您还需要该ID,请使用条目()。如果你不能,你的解决方案可能会达到最佳效果。 – 2013-02-11 13:38:27
查看http://code.google.com/p/lambdaj/wiki/LambdajFeatures – BobTheBuilder 2013-02-11 14:07:47