通过家庭作业了解Java迭代器和一般数据结构.
我已经构建了一个双链表(LinkedList),它使用Nodes(LinkedList $ Node)并有一个Iterator(LinkedList $ LinkedListIterator)所有类都使用泛型.
在LinkedListIterator的@Overridden remove()方法中,我正在使用外部类的方法,即LinkedList类.
我得到以下编译时错误:
./LinkedList.java:170: deleteNode(LinkedList<T>.Node<T>,LinkedList<T>.Node<T>,LinkedList<T>.Node<T>) in LinkedList<T> cannot be applied to (LinkedList<T>.Node<T>,LinkedList<T>.Node<T>,LinkedList<T>.Node<T>)
deleteNode(nodeToBeRemoved, next, prev);
Run Code Online (Sandbox Code Playgroud)
我的(原始)理解是类型不匹配,但我不明白这是怎么回事.
这是我完整的类代码:
import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.ConcurrentModificationException;
public class LinkedList<T> implements Iterable<T> {
private Node<T> sentinel;
private long modCount; //apparently no unsigned int's in Java.
public LinkedList() {
modCount = 0;
sentinel = new Node<T>(null);
sentinel.setNext(sentinel);
sentinel.setPrev(sentinel);
}
public void append(T t) {
/*
APPEND:
...
[-----]
| |
[-1st-]
| |
inFront-> [SENTL]
| | <-- [newNode] …Run Code Online (Sandbox Code Playgroud)