我无法理解下面这个方法如何删除链表中的重复项。调用此方法后,将成功删除所有重复项。为什么头不是空的? head节点不会为null,因为方法中的当前变量迭代到最后。此方法如何成功更新列表以删除重复项?
static boolean startsWithIgnoreCase(String line, String cmd) {
return line.regionMatches(
true /* ignore case */,
0 /* from start of line */,
cmd /* the thing you're searching for */,
0 /* from start of cmd */,
cmd.length() /* all of cmd */);
}
答案 0 :(得分:0)
通过将指针从上一个元素更改为指向下一个元素来删除元素。这就是你删除LinkedList
中的元素的方法。垃圾收集器稍后将删除该对象,因为没有对象再引用它。
以下是删除的说明:
通过记住HashSet
中的每个遇到的值来识别 。如果您发现之前已经遇到的元素(即包含在集合中),那么它就是重复。
head
无法获得null
,因为它之前不是null
,重复项只能在第一个元素之后出现,因为您需要遇到元素至少一次,直到你找到一个副本。例如,[1, 1, 1]
之类的列表会被修改为[1]
,而不是[]
。
变量head
在方法中也没有变化,它指向方法之前和之后的头节点。您似乎对current = head
感到困惑,但您需要知道,在Java中,不同步这两个变量。如果方法更改为current
,则head
会反映 。该声明仅表示'让current
指向head
点'的位置,之后您将current
指向其他位置。