作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个实现修改后的 Set 接口(interface)的 LinkedSet 对象类。当我尝试检查第一个节点是否指向 null 时,出现 NullPointerException。我不太确定如何解决这个问题。
这是相关代码。
整体Set对象的构造函数
public class LinkedSet<T> implements Set<T> {
private Node firstNode;
public LinkedSet() {
firstNode = null;
} // end Constructor
阻碍我的方法
public int getSize() {
int size = 1;
Node current = firstNode;
while ((current.next) != null) {
size++;
current = current.next;
}
return size;
} // end getSize()
isEmpty()方法
public boolean isEmpty() {
Node next = firstNode.next; //Get error here
if (next.equals(null)) {
return true;
}
return false;
} // end isEmpty()
这是 Node 对象的私有(private)内部类
private class Node {
private T data;
private Node next; //Get Error here
private Node(T data, Node next) {
this.data = data;
this.next = next;
} // end Node constructor
private Node(T data) {
this(data, null);
}// end Node constructor
} // end Node inner Class
最后这是主要的测试方法。
public class SetTester {
public static void main(String[] args) {
LinkedSet<String> set = new LinkedSet<String>();
System.out.println(set.getSize()); //Get error here
}
}
最佳答案
如果你的集合没有节点,那么它就是空的。因此,您的 isEmpty()
实现是您的问题,因为它假设您始终有一个 firstNode
,即使您在构造函数中将其显式设置为 null
.
试试这个:
public boolean isEmpty() {
return firstNode == null;
}
第一个问题被编辑掉后进行编辑:
您仍然访问 null(这会导致 NullPointerException
),因为您将 current
设置为 firstNode
,而该值又从未被设置为除空。
关于java - 获取 NullPointer 实现 LinkedSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42298681/
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 6 年前。 我正在尝试创建一个实现修改后的
我是一名优秀的程序员,十分优秀!