目标是从inorder树遍历返回可迭代的集合值。我的inorder遍历方法将所有必要的Positions添加到一个ArrayList(名为'positions')中,然后我循环遍历这个位置列表,访问该位置对象中的值并将它们添加到第二个ArrayList(名为'returns')返回。
我检查了java docs和ArrayList实现了Iterable,所以返回它应该没问题。我收到一个错误,说明两者不兼容。以下是有问题的代码:/** Returns an iterable collection of the keys of all entries stored in the
* map (in inorder). */
public Iterable<K> keySet() {
ArrayList<Position<Entry<K,V>>> positions = new ArrayList<Position<Entry<K,V>>>();
ArrayList<K> returned = new ArrayList<K>();
if(!isEmpty())
inorder(root(), positions);
for(int i = 0; i < positions.size(); i++){
Position<Entry<K,V>> pos = positions.get(i);
K key = pos.element().getKey();
returned.add(key);
}
return returned;
}
这是我得到的错误:
error: incompatible types: ArrayList<K> cannot be converted to Iterable<K>
return returned;
^