如何从最后一个迭代到第一个ArrayList?

Ric*_*hez 7 java iteration iterator

我想知道是否有可能从最后一个迭代到ArrayList中的第一个元素,如果是这样的话怎么样?原因是因为我需要删除添加到列表中的最后一个元素

das*_*ght 21

虽然你总是可以ArrayList使用索引来迭代你,就像这样

List<String> myList = new ArrayList<String>();
... add code to populate the list with some data...
for (int i = myList.size() - 1 ; i >= 0 ; i--) {
    if (myList.get(i).equals("delete me")) {
        myList.remove(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

你最好使用a ListIterator<T>来删除你的项目ArrayList:

ListIterator<String> listIter = myList.listIterator();
while (listIter.hasNext()) {
    if (listIter.next().equals("delete me")) {
        listIter.remove();
    }
}
Run Code Online (Sandbox Code Playgroud)

列表迭代器也可用于向后迭代列表 - 如下所示:

ListIterator<String> listIter = myList.listIterator(myList.size());
while (listIter.hasPrevious()) {
    String prev = listIter.previous();
    // Do something with prev here
}
Run Code Online (Sandbox Code Playgroud)

迭代器的初始索引应该等于最后一个元素的索引+ 1.正如文档所说:"初始调用previous将返回指定索引减去1的元素."


Mic*_*ter 8

这是一种方法(你的原因是一个单独的问题):

import java.util.*;

List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");

ListIterator<String> iter = list.listIterator(list.size());

while (iter.hasPrevious()) {
    String s = iter.previous();
    System.out.println(s);
}
Run Code Online (Sandbox Code Playgroud)