【发布时间】:2013-01-03 12:17:35
【问题描述】:
编辑:不知道为什么,但代码现在似乎在没有任何编辑的情况下工作。 jGrasp 调试器可能有问题吗?
===
好的。所以这是我的家庭作业,将在 2 周后分配,但我想要一个良好的开端。请不要更正我的代码,或分享正确的代码。如果你能指出我所做的错误,那就太好了。
所以我有一个带有以下构造函数的node:
public node(String name)
public node(String name, node next)
我需要在一个单独的类中编写一个方法public method(ArrayList<String> names),它将names中的所有元素添加到链接列表中。
这是我现在拥有的:
public method(ArrayList<String> names) {
if(names.size() == 0 || names == null) {
throw new IllegalArgumentException();
}
// Handle base case, create first node
first = new node(names.get(0)); // first has been declared above
node current = first;
// Add at the end of the list
for(int i = 1; i < names.size(); i++) {
current.next = new node(names.get(i));
current = current.next;
}
}
我不确定为什么这不能按要求工作。我正在使用 jGrasp,并使用调试器,我看到最后,我得到了一个只有 1 个值的链表(ArrayList 中的最后一个元素)。为什么?
请不要推荐使用任何高级功能,因为我是 Java 新手,使用任何进一步的高级功能只会让我感到困惑。
【问题讨论】:
-
你的
method不需要返回类型吗? -
变量首先应该保存整个链表。确保您不只是返回当前,这是链表的末尾。
-
您如何测试您的链接列表是否包含单个值,使用属性(在上面的代码中未更新)或通过迭代从
first到current.next == null的所有项目?如果您使用的是最后一种方法,请显示您在此方法中使用的代码。请注意您发布的代码,它至少应该可以编译。 -
另外,不相关,但您的
names.size() == 0 || names == null检查是倒退的。如果 names 为 null,则该检查的第一部分将抛出 NPE。 -
请显示更多代码?我们看不到您将当前节点添加到链表的位置。 +1 表示您不想要现成的解决方案
标签: java arraylist linked-list