-5

//这段代码不起作用。我不知道我做错了什么。它是一个双向链表,提示是使用列表迭代器。

import java.util.*;

public class ExtLinkedList<E> extends LinkedList<E>
{

    public ExtLinkedList<E> oddItemsList () 
    {
        ExtLinkedList<E> oddList = new ExtLinkedList<E>();
        ListIterator<E> itr = oddList.listIterator();
        for(int i = 0; itr.hasNext(); i++)
        {
            //E element = itr.next();
            if(i % 2 == 1)
            {
                //System.out.print(element);
                itr.remove();
                itr.next();
            }
            i++;
        }
        return oddList;
    }
}
4

1 回答 1

0

我不是真正的 Java 开发人员,但这应该会更好:

import java.util.*;

public class ExtLinkedList<E> extends LinkedList<E>
{

    public ExtLinkedList<E> oddItemsList () 
    {
        ExtLinkedList<E> oddList = new ExtLinkedList<E>();

        //Get the iterator of the current list instead of the new empty list.
        //Otherwise you will iterate over nothing.
        ListIterator<E> itr = listIterator();

        for(int i = 0; itr.hasNext(); i++)
        {
            E element = itr.next();
            if(i % 2 == 1)
            {
                //System.out.print(element);
                oddList.add(element);
            }
        }
        return oddList;
    }
}

修改:

  1. 在当前列表而不是空的奇数列表上调用 listIterator()。
  2. 您不需要随时删除元素,因为这会改变您的原始列表。
  3. 将 next() 返回的元素添加到您的 oddList
于 2013-10-12T05:42:13.340 回答