创建一个方法,返回集合中所有项目的数组(链表)

时间:2016-05-04 21:24:32

标签: java linked-list

我一直在努力寻找解决此方法所遇到的错误的方法:

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>

有人能给我一些建议吗?谢谢!

2 个答案:

答案 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;
    }