Java 为自定义LinkedList类添加方法

Java 为自定义LinkedList类添加方法,java,Java,我一直在为一个自定义linkedlist实验室开发这个add方法。一旦插入新节点,我就不知道如何将值转换为一个索引。这是我的源代码 public void add(int index, Object element) throws IndexOutOfBoundsException { if(index > size() || index < 0) { throw new IndexOutOfBoundsException(); } List

我一直在为一个自定义linkedlist实验室开发这个add方法。一旦插入新节点,我就不知道如何将值转换为一个索引。这是我的源代码

public void add(int index, Object element) throws IndexOutOfBoundsException {
    if(index > size() || index < 0) {
        throw new IndexOutOfBoundsException();
    }

    ListNode newNode = new ListNode(element, null);

    if(head == null) {
        head = newNode;
        return;
    }

    ListNode nextNode = head.nextNode;
    ListNode currNode = head;

    int i = 0;
    while(currNode!= null) {

        if(index == i) {
            break;
        }

        currNode = nextNode;
        //Breaks down here with null pointer exception
        nextNode = nextNode.nextNode;

    }

    currNode = newNode;
    currNode.nextNode = nextNode;
}
public void add(int索引,Object元素)引发IndexOutOfBoundsException{
如果(索引>大小()||索引<0){
抛出新的IndexOutOfBoundsException();
}
ListNode newNode=新ListNode(元素,空);
if(head==null){
头=新节点;
返回;
}
ListNode nextNode=head.nextNode;
ListNode currNode=头部;
int i=0;
while(currNode!=null){
如果(索引==i){
打破
}
currNode=nextNode;
//这里出现了空指针异常
nextNode=nextNode.nextNode;
}
currNode=newNode;
currNode.nextNode=nextNode;
}

它抛出空指针,因为当您迭代上一个节点时,下一个节点指向空。如果必须在最后一个节点中添加新节点,请检查next node point是否为null


另外,在代码中,您并没有增加i的值,它总是在迭代整个列表。

它抛出null指针,因为当您迭代最后一个节点时,下一个节点指向null。如果必须在最后一个节点中添加新节点,请检查next node point是否为null


同样,在你的代码中,你没有增加i的值,它总是迭代整个列表。

我真的不知道你在这里想要实现什么,我同意@Pritam Banerjee的评论。但代码中一个明显的问题是,您永远不会增加i,因此您永远不会中断while循环,并且在某个时候您将到达列表的末尾,并且nextNode.nextNode将为null,因此您的异常。(还要注意,nextNode.nextNode在currNode之前是空的。)

我真的不知道您在这里想要实现什么,我同意@Pritam Banerjee的评论。但代码中一个明显的问题是,您永远不会增加i,因此您永远不会中断while循环,并且在某个时候您将到达列表的末尾,并且nextNode.nextNode将为null,因此您的异常。(还要注意,nextNode.nextNode在currNode之前将为null。)

LinkedList与数组不同,理想情况下不应具有任何索引号。这就是LinkedList背后的概念。@PritamBanerjee你能解释一下原因吗。我最近在cpp中构建了这个链表函数。thanksA链表只是一组串联在一起的节点。每个节点只知道下一个节点(单链表)。@PritamBanerjee在这里试图在特定索引处添加新节点(可以说在特定数量的节点之后)。LinkedList理想情况下不应该有任何索引号,这与数组不同。这就是LinkedList背后的概念。@PritamBanerjee你能解释一下原因吗。我最近在cpp中构建了这个链表函数。thanksA链表只是一组串联在一起的节点。每个节点只知道下一个节点(单链表)。@PritamBanerjee在这里试图在特定索引处添加新节点(可以说在特定数量的节点之后)