Java:删除具有Void返回类型的链表中的特定节点(相同值的第一个实例,如果有)

Java:删除具有Void返回类型的链表中的特定节点(相同值的第一个实例,如果有),java,arrays,list,Java,Arrays,List,我不想用大量不必要的代码来填充这个空间,所以下面是我已经编写的代码: 创建删除特定节点(或相同值节点的第一个实例)的方法时遇到问题 我见过一些人尝试做同样的事情,但他们要么使用布尔返回类型,要么由于一些额外的方法,我无法将其正确转换为代码 并不是说我想要答案,但可以举个例子 这是我写的一部分,但不确定我是否走上了正确的道路 public void remove(DVD oneDVD) { DVDNode node = new DVDNode(oneDVD); DVDNode c

我不想用大量不必要的代码来填充这个空间,所以下面是我已经编写的代码:

创建删除特定节点(或相同值节点的第一个实例)的方法时遇到问题

我见过一些人尝试做同样的事情,但他们要么使用布尔返回类型,要么由于一些额外的方法,我无法将其正确转换为代码

并不是说我想要答案,但可以举个例子

这是我写的一部分,但不确定我是否走上了正确的道路

public void remove(DVD oneDVD) 
{
    DVDNode node = new DVDNode(oneDVD);
    DVDNode current;
    DVDNode previous;
    if (list == null)
    {
        list = node;
    }
        else
        {
            previous = current;
            current = current.next;
        }
}

你要做的第一件事是在DVD中添加一个
equals()
方法。否则,您无法检查节点是否“值相同”。
equals()
方法通过比较所有有效字段来工作,如果其中一个字段不同,则返回false;如果所有字段都相等,则返回true

然后,您的
remove
方法可以执行其工作:

  • 如果
    first
    为空-不执行任何操作
  • 否则,请先将
    内的DVD
    与给定的
    DVD
    进行比较。如果它们
    相等
    ,只需将
    第一个
    下一个
    分配给
    第一个
    。完成了
  • 否则,启动一个循环:

    previous = first;
    for ( current = first.next; current != null; current = current.next ) {
        if ( current.dvd.equals( oneDvd ) ) {
            previous.next = current.next;
            return;
        }
        previous = current;
    }
    
    此循环将在列表中查找给定的DVD。如果找到它,它将始终具有要连接的上一个节点。它只是取消当前节点的链接。请注意,它返回那里的
    ,并且不会继续到循环的末尾


为什么不使用内置的LinkedList?无论如何,要删除节点,首先从列表中找到要删除的节点(迭代到该节点)。到达节点后,将该节点的“上一个”设置为指向它的“下一个”。要返回一个空值,只需声明
return@olavimutanoja我们还没有了解内置LinkedList。我们必须先从头开始。听起来我的方法在减去返回值后或多或少是正确的,但我得到了一些关于电流如何未初始化的信息。你知道我在那里要做什么吗?