我在扩展 AbstractList 的 MyLinkedList 类中遇到了 NPE 的一些问题。我从这些构造函数开始:
私有 Node 类的构造函数:
public Node(T nodeData, Node<T> nodePrev, Node<T> nodeNext)
{
this.data = nodeData;
this.prev = nodePrev;
this.next = nodeNext;
}
MyLinkedList 类的构造函数
MyLinkedList()
{
this.head = new Node<T>(null, null, null);
this.tail = new Node<T>(null, null, null);
this.size = 0;
}
MyLinkedList(Node<T> head, Node<T> tail, int size)
{
this.head = head;
this.tail = tail;
this.size = size;
}
在这里我尝试使用这种方法在索引处返回节点:
private Node<T> getNth(int index)
{
Node<T> temp;
if(index < 0 || index > size)
throw new IndexOutOfBoundsException();
if(index < this.size() / 2)
{
temp = this.head;
for(int i = 0; i < index; i++)
{
temp = temp.getNext();
}
}
else
{
temp = this.tail;
for(int i = this.size(); i > index; i--)
{
temp = temp.getPrev();
}
}
return temp;
}
我认为主要问题与将头部和尾部初始化为空有关,但我不确定这是否是问题,如果是,如何解决。有没有更好的方法来初始化这些节点以避免 NPE?