倒带迭代器

时间:2014-05-24 11:32:43

标签: java iterator

我正在使用Libgdx制作游戏。在我的主循环中,我使用迭代器来遍历我世界的所有元素。我的World课程看起来像这样:

public class World implements Iterable<GameElement>
{
    ...
    public Iterator<GameElement> iterator()
    {
        return listGameElements.iterator();
    }
}

但是当我描述我的应用程序时,有很多来自行listGameElements.iterator()的分配(在每个游戏循环中都会调用此行,因此很多时候会在一秒钟内调用)。

我想将我的迭代器作为我的类的私有属性,但迭代器只能使用一次。 有没有办法倒回迭代器,以避免进行更多的分配?

1 个答案:

答案 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());
}