Ответ 1
Думаю, я нашел решение просто на самом деле, но я не могу удалить этот пост уже потому, что у него есть ответы..
Я только добавил T t = list.get(i);
во второй цикл for, все остальные коды остались без изменений.
Я перебираю ArrayList следующим образом:
for (T t : list){
...
}
Когда я это сделал, я никогда не думал, что мне нужно получить доступ к предыдущим и последующим элементам этого элемента. Теперь мой код огромен. Это стоит много, если я переписал его с помощью:
for (int i = 0; i < list.size(); i++){
...
}
Думаю, я нашел решение просто на самом деле, но я не могу удалить этот пост уже потому, что у него есть ответы..
Я только добавил T t = list.get(i);
во второй цикл for, все остальные коды остались без изменений.
Нет, цикл for-each предназначен для абстрагирования Iterator<E>
, который находится под капотом. Доступ к ней позволит вам извлечь предыдущий элемент:
ListIterator<T> it = list.listIterator();
while (it.hasNext()) {
T t = it.next();
T prev = it.previous();
}
но вы не можете сделать это напрямую с каждым из них.
В качестве ответа на заголовок, а не на вопрос (с учетом параллельных операций)...
T current;
T previous;
{
ListIterator<T> lit = list.listIterator(index);
current = lit.hasNext()?lit.next():null;
previous = lit.hasPrevious()?lit.previous():null;
}
Вы можете получить доступ к любому элементу в ArrayList с помощью метода get (index).
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));
}
}
}
Я тоже нашел решение. Это было дальше. Для следующего: letters.get(letters.indexOf(')') +1); Для предыдущего: letters.get(letters.indexOf(')') -1)