我有一个名为Graph的自定义类,其中我使用邻接列表.更具体地说,我有一个哈希映射数组,其中每个哈希映射包含所有节点的邻居作为边.关键是结束节点,值是Edge对象.
现在我想让这个Graph类实现Iterable.有没有办法合并所有这些哈希映射并返回所有元素的公共迭代器?
使用该方法非常有效是非常重要的.
您可以使用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)
第二种解决方案将使用稍微更多的内存,并且会慢一点.不过我怀疑这很重要.
| 归档时间: |
|
| 查看次数: |
1043 次 |
| 最近记录: |