gpt4 book ai didi

java - 获取 NullPointer 实现 LinkedSet

转载 作者:行者123 更新时间:2023-12-01 07:19:58 25 4
gpt4 key购买 nike

我正在尝试创建一个实现修改后的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com