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



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

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

我不是真正的 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

最新更新