这是我写的:
public class LinkedListDeque<Whatever> {
private class Node {
private Whatever item;
private Node prev;
private Node next;
private Node(Whatever i, Node p, Node n) {
item = i;
prev = p;
next = n;
}
}
private Node sentinel;
private int size;
/** Creates an empty Deque. */
public LinkedListDeque() {
sentinel = new Node(null, sentinel, sentinel);
size = 0;
}
}
现在我想用类似的东西替换底部第四行中的null
Integer 1
然后我的IDE(Intellij
(告诉我',' or ')' expected
.
问题是:
我想在这个构造函数中设置sentinel.item
equals to 1
,这可能吗?
退一步说,有没有其他代码可以安全地替换代码null
?
我认为您的真正问题不是正确的实现:
- 您的
LinkedListDeque
具有sentinel
节点,即队列的头部。因此,如果队列为空,则size = 0
并sentinel = null
; - 当您将新项目添加到队列中时,您必须检查它是否为空(即
size = 0
或sentinel = null
(或不(。如果为空,只需创建新的Node
,否则将新节点添加到队列的末尾; - 根据上面,你不应该改变
Node.item
,即它应该是final
:private Whatever item
。
我认为你的类可能看起来像这个(这只是一个例子(:
public final class LinkedListDeque<Whatever> {
private class Node {
private final Whatever item;
private Node prev;
private Node next;
private Node(Whatever item) {
this.item = item;
}
}
private Node sentinel;
private int size;
public void add(Whatever item) {
Node node = new Node(item);
if (size != 0) {
node.next = sentinel;
sentinel.prev = node;
}
sentinel = node;
size++;
}
}