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

Java 如何从ArrayList的最后一个迭代到第一个?,java,iterator,iteration,Java,Iterator,Iteration,我想知道是否可以在ArrayList中从最后一个元素迭代到第一个元素,如果可以,如何迭代?原因是我需要删除添加到列表中的最后一个元素如果需要删除数组列表的最后一个元素,可以执行以下操作: arrayList.remove(arrayList.size()-1); 如果要从后向前删除所有元素,可以使用以下for循环: for(int i = arraList.size()-1; i >= 0; i--) { arrayList.remove(i); } 有关阵列列表的更多信

我想知道是否可以在ArrayList中从最后一个元素迭代到第一个元素,如果可以,如何迭代?原因是我需要删除添加到列表中的最后一个元素

如果需要删除数组列表的最后一个元素,可以执行以下操作:

arrayList.remove(arrayList.size()-1);
如果要从后向前删除所有元素,可以使用以下for循环:

for(int i = arraList.size()-1; i >= 0; i--)
{
       arrayList.remove(i);
}
有关阵列列表的更多信息,请访问此处:


希望这能有所帮助。

而您总是可以使用索引来迭代您的
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);
    }
}
列表迭代器也可用于向后迭代列表,如下所示:

ListIterator<String> listIter = myList.listIterator(myList.size());
while (listIter.hasPrevious()) {
    String prev = listIter.previous();
    // Do something with prev here
}
ListIterator listIter=myList.ListIterator(myList.size());
while(listIter.hasPrevious()){
String prev=listIter.previous();
//在这里用prev做些什么
}
迭代器的初始索引应等于最后一个元素的索引+1。正如谚语所说:“对
previous
的初始调用将返回指定索引为负1的元素。”

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

import java.util.*;
列表=新的ArrayList();
列表。添加(“a”);
列表。添加(“b”);
列表。添加(“c”);
ListIterator iter=list.ListIterator(list.size());
while(iter.hasPrevious()){
字符串s=iter.previous();
系统输出打印项次;
}
列表名称=。。。。
int count=names.getSize();
迭代器i=names.Iterator();
while(i.hasNext()){
必须先调用字符串s=i.next();//才能调用i.remove()
//做点什么
如果(计数=1)
i、 删除();
计数--;
}

为什么不干脆
list.remove(list.size()-1)
?看看list的api文档怎么样。在文档中寻找“迭代器”应该会有帮助。但我问的原因是因为我在使用foreach时遇到问题,并将代码更改为使用while和hasNext迭代器组合,所以我想将代码更改为更健壮的代码,如果这样做有意义的话,您就不能使用for-each循环修改数组的内容。但是这个选项不是从头到尾的吗?我需要尽可能以最好的方式从最后一个元素到第一个元素进行删除,以避免出现错误errors@RicardoSanchez评论在10分钟前就已经发布了,其中一行删除了最后一个元素。如果这还不够,也许你需要提高你的要求上一段代码在listIterator()方法中没有“-1”的情况下对我有效:“myList.listIterator(myList.size());”在“-1”的情况下,interator忽略了最新的项,从倒数第二位开始。这不会从头到尾迭代。它反转集合,然后从头开始迭代。它不仅具有破坏性,而且效率很低。
ListIterator<String> listIter = myList.listIterator(myList.size());
while (listIter.hasPrevious()) {
    String prev = listIter.previous();
    // Do something with prev here
}
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);
}
ArrayList aList = new ArrayList();
aList.add(1);
aList.add(2);
aList.add(3);

Collections.reverse(aList);

Iterator iter = aList.iterator();
while(iter.hasNext()){
    iter.next();
    iter.remove();//remove an element
    break;//break from the loop or something else
}
List<String> names = ....
int count= names.getSize();
Iterator<String> i = names.iterator();
while (i.hasNext()) {
   String s = i.next(); // must be called before you can call i.remove()
   // Do something
   if (count==1)
      i.remove();
   count--;
}