Java 无法从我的界面中找到方法
我创建了一个名为LLIterator的接口,该接口扩展了迭代器并向其添加了两个方法,当我试图在我的一个类中使用它时,我无法编译它。这是我得到的。 我的自定义界面如下所示:Java 无法从我的界面中找到方法,java,interface,Java,Interface,我创建了一个名为LLIterator的接口,该接口扩展了迭代器并向其添加了两个方法,当我试图在我的一个类中使用它时,我无法编译它。这是我得到的。 我的自定义界面如下所示: import java.util.Iterator; public interface LLIterator<T> extends Iterator<T>{ boolean hasNext(); T next(); vo
import java.util.Iterator;
public interface LLIterator<T> extends Iterator<T>{
boolean hasNext();
T next();
void remove();
void addBefore(T element);
void addAfter(T element);
}
import java.lang.StringBuilder;
import java.util.NoSuchElementException;
import java.util.Iterator;
import java.util.ArrayList;
/**
* A class to represent a linked list of nodes.
*/
public class LinkedList<T> implements Iterable<T>{
/** the first node of the list, or null if the list is empty */
private LLNode<T> first;
/** some codes here
@Override
public LLIterator<T> iterator() {
return new LinkedListIterator();
}
private class LinkedListIterator implements LLIterator<T>{
LLNode<T> nodeptr = first;
final LinkedList<T> list = getList();
@Override
public void addBefore(T element){
if(nodeptr == first || list.isEmpty()){
throw new NoSuchElementException();
}
LLNode<T> newnode = new LLNode<T>(element, null);
newnode.setNext(nodeptr);
}
@Override
public void addAfter(T element){
LLNode<T> newnode;
if(nodeptr == first || list.isEmpty()){
newnode = new LLNode<T>(element, null);
list.setFirst(newnode);
}
newnode = new LLNode<T>(element, null);
newnode.setNext(nodeptr.getNext());
nodeptr.setNext(newnode);
}
}
这是我另一节课的一部分:
public void addFollowingWord(String word){
Iterator<WordData> iterator = list.iterator();
WordData current = iterator.next();
while(iterator.hasNext()){
if(current.getWord().equals(word)){
current.incrementCount();
}
else if(current.getWord().compareTo(word) < 0){
current = iterator.next();
}
else if(current.getWord().compareTo(word) > 0){
WordData newword = new WordData(word);
iterator.addBefore(newword);
}
}
if(!iterator.hasNext()){
WordData newword = new WordData(word);
iterator.addAfter(newword);
}
}
public void addfollowing字(字符串字){
迭代器迭代器=list.Iterator();
WordData current=iterator.next();
while(iterator.hasNext()){
if(current.getWord().equals(word)){
current.incrementCount();
}
else if(current.getWord().compareTo(word)<0){
current=iterator.next();
}
else if(current.getWord().compareTo(word)>0){
WordData newword=新的WordData(word);
iterator.addBefore(newword);
}
}
如果(!iterator.hasNext()){
WordData newword=新的WordData(word);
iterator.addAfter(newword);
}
}
我很困惑,我是在什么地方犯了错误还是遗漏了什么?您无法访问自定义界面上的方法,因为它被转换为
迭代器。更新iterator()
方法以返回子接口:
@Override
public LLIterator<T> iterator() {
return new LinkedListIterator();
}
@覆盖
公共编译器迭代器(){
返回新的LinkedListIterator();
}
您无法访问自定义界面上的方法,因为它被转换为迭代器。更新iterator()
方法以返回子接口:
@Override
public LLIterator<T> iterator() {
return new LinkedListIterator();
}
@覆盖
公共编译器迭代器(){
返回新的LinkedListIterator();
}
发布你的课程的完整代码请看一看,非常感谢发布你的课程的完整代码请看一看,非常感谢你花时间回答我的问题,但是在我像你说的那样编辑之后,它似乎不起作用了。。。。你能看看我发布的新代码吗?你仍然在使用迭代器界面。您需要使用illiterator
。sry先生,我在这里没有更改,但我在代码中做了更改,仍然给了我相同的错误。@Rio我说的是这一行:Iterator Iterator=list.Iterator()代码>非常感谢您抽出时间回答我的问题,但在我按您所说的那样编辑它之后,它似乎不起作用。。。。你能看看我发布的新代码吗?你仍然在使用迭代器界面。您需要使用illiterator
。sry先生,我在这里没有更改,但我在代码中做了更改,仍然给了我相同的错误。@Rio我说的是这一行:Iterator Iterator=list.Iterator()代码>