在java中从头开始创建链表,但删除方法是';行不通

在java中从头开始创建链表,但删除方法是';行不通,java,linked-list,Java,Linked List,创建一个链表,但在我的删除方法上遇到了困难。我的名单包括: Node<String> text1 = new Node<>(); text1.setData("Hello"); Node<String> text2 = new Node<>(); text2.setData("World"); Node<String> text3 = new Node<>(); text3.setData("Test"); 一旦执行,该方

创建一个链表,但在我的删除方法上遇到了困难。我的名单包括:

Node<String> text1 = new Node<>();
text1.setData("Hello");
Node<String> text2 = new Node<>();
text2.setData("World");
Node<String> text3 = new Node<>();
text3.setData("Test");
一旦执行,该方法应该在提示该节点确实已被删除的消息之后显示true。但是,该方法永远不会在while语句中到达并直接返回false

我知道问题出在我的while语句上,但我已多次尝试将其更改为:

while (current != null) 
while (current != node) 
while (current.getNext() != null || current == tail)
while (current != null && current.getNext != node)
等等

它要么返回false,要么只显示NullPointerException错误

public boolean remove(Node node) {
    if (listSize == 0) {
        throw new IllegalStateException("nothing to delete here :/");
    }
    boolean result = false;
    Node prev = head;
    Node current = head;
    while (current != null) {
        if (node.equals(current.getData())) {
            if (listSize == 1) {
                head = null;
                tail = null;
            } else if (current.equals(head)) {
                head = head.getNext();
            } else if (current.equals(tail)) {
                tail = prev;
                tail.setNext(null);
            } else {
                prev.setNext(current.getNext());
            }
            current.setNext(current.getNext());
            listSize--;
            result = true;
        }
        prev = current;
        current = prev.getNext();
    }
    return result;
}
在方法顺利运行后,预期的输出应该是这样的

removed text 3: true (removed)
现在它显示:

remove text 3: false (removed)

这里,
节点
是一个
节点
对象,但您将其与字符串对象进行比较。尝试
node.getData().equals(current.getData())
代替了用于比较的
node.equals(current.getData())

node.equals(current.getData())看起来像是在将节点与数据进行比较。好的,我已经删除了您指向的if语句,并且该方法有效
remove text 3: false (removed)