我正在使用Libgdx制作游戏。在我的主循环中,我使用迭代器来遍历我世界的所有元素。我的World
课程看起来像这样:
public class World implements Iterable<GameElement>
{
...
public Iterator<GameElement> iterator()
{
return listGameElements.iterator();
}
}
但是当我描述我的应用程序时,有很多来自行listGameElements.iterator()
的分配(在每个游戏循环中都会调用此行,因此很多时候会在一秒钟内调用)。
我想将我的迭代器作为我的类的私有属性,但迭代器只能使用一次。 有没有办法倒回迭代器,以避免进行更多的分配?
答案 0 :(得分:3)
您可以根据ListIterator进行操作,它可以让您双向前进。
使用示例:
aList.add("1");
aList.add("2");
aList.add("3");
aList.add("4");
aList.add("5");
ListIterator listIterator = aList.listIterator();
System.out.println("moving forward");
while(listIterator.hasNext()) {
System.out.println(listIterator.next());
}
System.out.println("moving backward");
while(listIterator.hasPrevious()) {
System.out.println(listIterator.previous());
}