Java 将对象/整数插入单链表并对其排序

Java 将对象/整数插入单链表并对其排序,java,list,sorting,linked-list,Java,List,Sorting,Linked List,我制作了一个单链接列表,但我一直得到一个NullPointerException。insert方法应该将一个对象添加到单链表中,然后我将SLL的所有元素放入MyVector类中,然后使用我为MyVector类制作的快速排序算法,然后将对象放回SSL中。我不太清楚为什么我总是出错 线程“main”java.lang.NullPointerException中出现异常 位于java.lang.Integer.compareTo(Integer.java:978) 位于java.lang.Intege

我制作了一个单链接列表,但我一直得到一个NullPointerException。insert方法应该将一个对象添加到单链表中,然后我将SLL的所有元素放入MyVector类中,然后使用我为MyVector类制作的快速排序算法,然后将对象放回SSL中。我不太清楚为什么我总是出错

线程“main”java.lang.NullPointerException中出现异常 位于java.lang.Integer.compareTo(Integer.java:978) 位于java.lang.Integer.compareTo(Integer.java:37) 在collection.sortedslist.remove(sortedslist.java:51) 在collection.sortedslist.insert处(sortedslist.java:39) 在lab.Lab6.test中(Lab6.java:15) main.main.main(main.java:15) Java结果:1

公共空白插入(对象元素){
if(head==null){
head=tail=newsllistnode(元素,空);
++大小;
返回;
}
tail=tail.next=newsllistnode(元素,空);
++大小;
MyVector temp=新的MyVector();
int i=大小;
对象t=头数据;
while(温度大小()
问题在于你在哪里做:

while(temp.size() < i) {
    temp.append(t);
    remove(t); //this line
    t = head.next;
}
while(临时大小()

问题是您已经删除了头(t),因此您应该将t设置为等于
head.data
,而不是
head.next

异常跟踪表明您正在调用remove(null)。由于某些原因,head.data或head.next包含null。我建议您在此处添加打印输出:

Object t = head.data;
while(temp.size() < i) {
    System.out.println("Looking at " + t); // <-- add here
    temp.append(t);
    remove(t); //this line
    t = head.next;
}
Object t=head.data;
while(温度大小()System.out.println(“注视”+t);//您可以发布stacktrace吗,或者让我们知道错误发生在哪一行?不确定stacktrace是什么,但我在代码中标记了这些行,并添加了NetBeans给我的错误消息。您发布的异常是stacktrace…:)是要插入的递归调用吗?如何工作?实际上我猜应该是
head.data
因为您要删除的是数据,而不是节点。
Object t = head.data;
while(temp.size() < i) {
    System.out.println("Looking at " + t); // <-- add here
    temp.append(t);
    remove(t); //this line
    t = head.next;
}