迭代器存储在数组中的散列映射中的所有元素

1 java collections

我有一个名为Graph的自定义类,其中我使用邻接列表.更具体地说,我有一个哈希映射数组,其中每个哈希映射包含所有节点的邻居作为边.关键是结束节点,值是Edge对象.

现在我想让这个Graph类实现Iterable.有没有办法合并所有这些哈希映射并返回所有元素的公共迭代器?

使用该方法非常有效是非常重要的.

ord*_*rig 6

您可以使用ChainedIteratorapache commons集合:

Iterator current = IteratorUtils.emptyIterator();
for(map: arrayOfHashmaps) {
   current = IteratorUtils.chainedIterator(current, map.keySet().iterator);
}
Run Code Online (Sandbox Code Playgroud)

如果你想避免公共集合,你可以只收集列表中的密钥集并迭代它:

List allKeys = new LinkedList();
for(map: arrayOfHashmaps) {
   allKeys.addAll(map.KeySet());
}
return allKey.iterator();
Run Code Online (Sandbox Code Playgroud)

第二种解决方案将使用稍微更多的内存,并且会慢一点.不过我怀疑这很重要.