【发布时间】:2021-11-30 14:39:17
【问题描述】:
我正在开发一个实现歌曲播放列表的简单 Java 项目。我的程序应该能够将歌曲添加到播放列表,并具有向前跳、重复和向后跳的功能。我正在尝试编写一个简单的方法,调用时会跳过歌曲,但它总是返回相同的元素。 请阅读下面代码中的 cmets 以更好地理解我的问题。
这是一个简化的例子:
import java.util.LinkedList;
import java.util.ListIterator;
public class testClass {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
// Add elements to the list.
list.add("First Element");
list.add("Second Element");
list.add("Third Element");
ListIterator<String> iter = list.listIterator();
// If I call this method it works and returns next elements.
System.out.println(iter.next());
System.out.println(iter.next());
System.out.println("======================");
// However this method returns same elements no matter how many times I call it.
// Why does this happen and how can I fix it ?
skip(list);
skip(list);
// outputs :
//First Element
//Second Element
==================
//First Element
//First Element
}
public static void skip(LinkedList<String> stringList) {
ListIterator<String> iter = stringList.listIterator();
if(iter.hasNext())
System.out.println(iter.next());
}
}
【问题讨论】:
-
每次你的skip方法调用
stringList.listIterator(),都会返回一个全新的迭代器,它指向列表的开始。