我一直在努力寻找解决此方法所遇到的错误的方法:
public Object[] toArray() {
int size = 1;
Node curr = head;
while (curr.getNext() != null) {
size++;
curr = curr.getNext();
}
Object[] arr = new Object[size];
arr[0] = head.getItem();
curr = head;
for (int i = 1; i < size; i++) {
arr[i] = curr.getNext().getItem();
}
return arr;
}
该方法的目标是简单地返回集合中所有项目的对象数组。这个方法是我班级的一部分,&#34; Set&#34;,这是我的&#34; LinkedList&#34;的子类。 class,它允许我访问实例变量head。该方法将获取我的列表并将第一个元素和第二个元素添加到数组中,然后继续执行第三个,第四个等,它只是使用列表中的第二个元素填充数组的其余部分。 / p>
有人能给我一些建议吗?谢谢!
答案 0 :(得分:1)
您似乎忘了在开始第二次迭代之前将curr
重置回head
。否则,你将从最后而不是开头开始。
答案 1 :(得分:0)
试试这个:
public Object[] toArray() {
int size = 1;
Node curr = head;
while (curr.getNext() != null) {
size++;
curr = curr.getNext();
}
Object[] arr = new Object[size];
//arr[0] = head; // Shouldn't be arr[0] = head.getItem(); ???
arr[0] = head.getItem();
Node curr = head; // You should set curr to head;
for (int i = 1; i < size; i++) {
arr[i] = curr.getNext().getItem();
curr = curr.getNext(); // Otherwise you can't go to next element;
}
return arr;
}