我正在尝试从列表中删除节点,但节点不会消失。该方法应该遍历列表并检查toDelName ==任何名称节点。如果是,那么它将删除该节点。
.ui-fieldset-legend .ui-fieldset-toggler.ui-icon-plusthick { /* plus */ }
.ui-fieldset-legend.ui-state-hover .ui-fieldset-toggler.ui-icon-plusthick { /* plus */}
.ui-fieldset-legend .ui-fieldset-toggler.ui-icon-minusthick { /* minus */ }
.ui-fieldset-legend.ui-state-hover .ui-fieldset-toggler.ui-icon-minusthick { /* minus */}
答案 0 :(得分:0)
您遇到的问题是:
current.prev = current;
您应该删除该行。原因是,每次执行该行时,current.prev都会设置为current。因此,在while循环的第一次迭代之后,current.prev.next(在if-case中尝试分配)将始终具有值current.next - 您的赋值
current.prev.next = current.next;
因此,什么都不做。
您可能尝试以某种方式更新名称为current的对象。但是,这在面向对象编程中不是必需的。一旦current被分配给current.next,值current.prev就会指向更改。
答案 1 :(得分:0)
current.prev = current;
。 当您需要删除列表的最后一个节点时,您也无法处理该条件。
public void removeName(String toDelName, Names list) {
Names current = list;
while (current.next != null) {
if (current.name.equalsIgnoreCase(toDelName)) {
current.prev.next = current.next;
current.next.prev = current.prev;
return;
}
current = current.next;
}
if (current.name.equalsIgnoreCase(toDelName)) {
current.prev.next = null;
}
}
//打印列表以供检查。
public static void print(Names start) {
while (start != null) {
System.out.println(start.getName());
start = start.getNext();
}
}