所以我在java中有一个双重链接的列表并且我正在测试它但是当我决定在同一个索引中删除两个元素时它抛出一个空指针异常
这是我的清单[A,B,C,D,E] 这是我的考试
System.out.println("Item removed at index 3: " + list.removeAtIndex(3));
System.out.println(list);
//throws exception at following line
System.out.println("Item removed at index 3: " + list.removeAtIndex(3));
System.out.println(list);
列表应为[A,B,C] 但它引发了一个例外 这是我对removeAtIndex方法的实现
public E removeAtIndex(int index) {
DoublyLinkedNode<E> node = firstNode;
for(int i = 0; i < index; i++)
{
node = node.getNext();
}
E item = node.getItem();
node.getPrevious().setNext(node.getNext());
node.getNext().setPrevious(node.getPrevious());
return item;
}
我该如何解决这个问题?
编辑:我忘了说,当我在一个索引处删除然后再次删除但在不同的索引处它可以正常工作
答案 0 :(得分:1)
我怀疑有一个问题:
您没有使用sentinel(虚拟)标头和尾节点。所以当你从最后删除并打电话
node.getNext().setPrevious(node.getPrevious());
node.getNext();//actually returns null at the end of a list
调用getNext和getPrevious方法
后,您需要检查null