如何访问ArrayList中的上一个/下一个元素?

时间:2013-11-08 02:17:42

标签: java for-loop arraylist

我以这种方式遍历ArrayList:

for (T t : list){
  ...
}

当我这样做时,我从未想过我必须访问此元素的上一个和下一个元素。现在我的代码很庞大。如果我用以下内容重写它会花费很多:

for (int i = 0; i < list.size(); i++){
  ...
}

5 个答案:

答案 0 :(得分:21)

不,for-each循环用于抽象引擎盖下的Iterator<E>。访问它将允许您检索前一个元素:

ListIterator<T> it = list.listIterator();

while (it.hasNext()) {
  T t = it.next();
  T prev = it.previous();
}

但你无法直接使用for-each。

答案 1 :(得分:4)

作为标题的答案,而不是问题(考虑并发操作)......

T current;
T previous;
{
    ListIterator<T> lit = list.listIterator(index);
    current = lit.hasNext()?lit.next():null;
    previous = lit.hasPrevious()?lit.previous():null;
}

答案 2 :(得分:1)

您可以使用get(index)方法访问ArrayList中的任何元素。

import java.util.ArrayList;


public class Test {
    public static void main(String[] args) {
        ArrayList<Integer> array = new ArrayList<Integer>();

        array.add(1);
        array.add(2);
        array.add(3);

        for(int i=1; i<array.size(); i++){
            System.out.println(array.get(i-1));
            System.out.println(array.get(i));
        }
    }
}

答案 3 :(得分:1)

我也找到了解决方案。是下一个。 下一个:letter.get(letters.indexOf(')')+ 1); 对于以前的:letter.get(letters.indexOf(')')-1)

答案 4 :(得分:0)

我认为我发现解决方案实际上很简单,但我不能删除这篇帖子,因为它有答案..

我刚刚在第二个for循环中添加了T t = list.get(i);,所有其他代码保持不变。

相关问题