使用给定链接列表中的奇数编号元素构建新链接列表的方法

时间:2013-10-12 03:55:31

标签: java

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

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

1 个答案:

答案 0 :(得分: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()而不是在空的oddList上调用。
  2. 您不需要随意删除元素,因为这会改变您的原始列表。
  3. 将next()返回的元素添加到oddList