//此代码不起作用。我不知道我做错了什么。它是一个双向链表,提示是使用列表迭代器。
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;
}
}
修改:
- 在
- 当前列表上调用 listIterator((,而不是在空的 oddList 上。
- 您不需要随时删除元素,因为这会更改您的原始列表。
- 将 next(( 返回的元素添加到 oddList