这可能是一个愚蠢的问题,因为我不是主修电脑。 我正在阅读破解编码面试,它有以下代码。
但是Java(在eclipse中)无法识别LinkedListNode
,但它识别LinkedList
。
我应该创建一个类名LinkedListNode
,一个双链表吗?不应该像import java.util.*
那样在LinkedList
中使用java吗?
import java.util.*;
public static void deleteDups2(LinkedListNode head) {
if (head == null) return;
LinkedListNode previous = head;
LinkedListNode current = previous.next;
while (current != null) {
LinkedListNode runner = head;
while (runner != current) { // Check for earlier dups
if (runner.data == current.data) {
LinkedListNode tmp = current.next; // remove current
previous.next = tmp;
current = tmp; // update current to next node
break; // all other dups have already been removed
}
runner = runner.next;
}
if (runner == current) { // current not updated - update now
previous = current;
current = current.next;
}
}
}
答案 0 :(得分:10)
LinkedListNode
不是Java附带的类。本书后面的“代码库”部分(第XI节)包含LinkedListNode
的实现。
我会在这里包含代码,但书中的版权声明不允许这样做。
答案 1 :(得分:0)
Java具有LinkedList<T>
实现,仅供您使用。您可以使用LinkedList<T>
而无需担心如何实施它。您无法更改实施或访问内部元素。
Java LinkedList<T> Node
(Node
是voidLink
)定义如下
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Queue<E>, Cloneable, Serializable {
private static final long serialVersionUID = 876323262645176354L;
transient int size;
transient LinkedList.Link<E> voidLink;
,LinkedList.Link
类如下
private static final class Link<ET> {
ET data;
LinkedList.Link<ET> previous;
LinkedList.Link<ET> next;
Link(ET o, LinkedList.Link<ET> p, LinkedList.Link<ET> n) {
this.data = o;
this.previous = p;
this.next = n;
}
}
因此,您的示例只是Java链接列表实现的副本,您需要为此创建一个新的节点类。
答案 2 :(得分:-2)
LinkedListNode
不是标准Java API类型之一,可以通过搜索https://docs.oracle.com/javase/8/docs/api/看到。这意味着从java.util
导入无济于事,因为该包不包含该类型。什么包包含该类型?您的来源是否告诉您?
有三种主要的Java包,区别在于包的反序域名或域名:
java.**
和javax.**
。这些软件包附带语言。org.**
。这些是&#34;非营利性的&#34;来自apache.org等地方的软件包com.**
。这些是&#34;商业&#34;包,来自Oracle或您自己。 java.util.**
是第一种,语言附带的软件包。 LinkedListNode
不在那里。这意味着它来自另外两个(可能是org.apache.**
)来自http://apache.org的软件包之一。找出答案的一种方法是进行谷歌搜索,比如LinkedListNode
。几个候选人出现。
也许您误读了LinkedList.Node
中的私人类型LinkedList
类型。 http://www.docjar.com/docs/api/java/util/LinkedList $ Node.html