hkb*_*ath 0 java iterator linked-list
这是我为实现链表而编写的代码,
private class DequeIterator<Item> implements Iterable<Item> {
private Node pElement;
DequeIterator() {
pElement = first;
}
public boolean hasNext() {
return pElement != null;
}
public Item next() {
if (!this.hasNext()) {
throw new NoSuchElementException();
}
Item ret = pElement.it;
pElement = pElement.next;
return ret;
}
public void remove() {
throw new UnsupportedOperationException();
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道出了什么问题我得到了以下错误,请帮我解决这些问题
=> Deque.java:25:错误:Deque.DequeIterator不是抽象的,并且不会覆盖Iterable中的抽象方法iterator()
=> Deque.java:35:错误:不兼容的类型Item ret = pElement.it; ^必需:项目#2找到:项目#1
=> Deque.java:121:错误:不兼容的类型返回new DequeIterator(); ^ required:Iterator发现:Deque.DequeIterator
您正在实现错误的接口.Iterable要求您实现iterator()您未提供的方法.因此第一个错误.
你可能想要实现Iterator,这需要hasNext(),next()和remove().
你没有显示你的其余代码,但我认为你有Deque.java其余的链表代码(即对head等的引用),所以你可能想要Deque implements Iterable<Item>使用iterator()返回实例的方法DequeIterator.
您还需要去掉<Item>从DequeueIterator.您已经说它实现了Iterable<Item>,因此您限制了类型.您正在将其更改为泛型类型,这是导致第二个错误的原因.我认为这Item是在其他地方定义的具体类(特别是因为pElement返回它并且没有与之关联的泛型类型).
第三个错误,不知道第121行是什么,你没有包括它.但最有可能它对我上面提到的同样的理由(DequeIterator需要实现Iterator不Iterable)