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;
}
主な問題は頭と尾をnullとして初期化することに関係していると思いますが、これが問題なのかどうか、また問題がある場合は修正方法がわかりません。NPE を回避するためにこれらのノードを初期化するより良い方法はありますか?