Java 使用冒泡排序和交换方法对双链表进行排序

Java 使用冒泡排序和交换方法对双链表进行排序,java,bubble-sort,doubly-linked-list,Java,Bubble Sort,Doubly Linked List,我正在尝试对一个自我实现的双链接列表进行排序,但是它似乎在无休止地迭代,我不确定我做错了什么。任何帮助都将不胜感激 public void sortLine(){ 模块电流=this.getLeftMostModule(); 模块下一步=this.getLeftMostModule().getRight(); while(next!=this.getRightMostModule()){ while(下一步!=null){ 如果(current.getName().compareToIgnore

我正在尝试对一个自我实现的双链接列表进行排序,但是它似乎在无休止地迭代,我不确定我做错了什么。任何帮助都将不胜感激

public void sortLine(){
模块电流=this.getLeftMostModule();
模块下一步=this.getLeftMostModule().getRight();
while(next!=this.getRightMostModule()){
while(下一步!=null){
如果(current.getName().compareToIgnoreCase(next.getName())>0){
交换(当前,下一个);
}
next=next.getRight();
}
current=current.getRight();
}
}
公共无效交换(模块当前、模块下一个){
布尔isLeft=false;
布尔值isRight=false;
if(current.isLeftMostModule()){
isLeft=true;
}
if(next.isRightMostModule()){
isRight=正确;
}
模块温度=电流;
当前=下一个;
下一个=温度;
if(isLeft){
next.setLeftMostModule();
current.setNonMostModule();
}
否则,如果(isRight){
setNonMostModule();
current.setRightMostModule();
}
}
我调用了一个交换函数,我也包括了这个函数。非常感谢。我不允许添加setName方法,也不能访问getName之外的name字段。但是,我可以将助手方法添加到此类中


编辑--更新了代码,但仍然无法工作。在compareToIgnoreCase上获取NPE,但没有得到我想要的结果

外部for循环中的
i
计数器从不递增。

交换“值”而不是“下一个”/“上一个”链接不是更容易吗
temp=current.getName();current.setName(next.getName());next.setName(temp)完成了。遗憾的是,我不允许创建方法setName(),并且名称字段是私有的。我对代码进行了一些更改,但它仍然不起作用。