nom*_*nom 11 java for-loop arraylist
我以这种方式遍历ArrayList:
for (T t : list){
...
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我从未想过我必须访问此元素的上一个和下一个元素.现在我的代码很庞大.如果我用以下内容重写它会花费很多:
for (int i = 0; i < list.size(); i++){
...
}
Run Code Online (Sandbox Code Playgroud)
Jac*_*ack 21
不,for-each循环用于抽象Iterator<E>引擎盖下的内容.访问它将允许您检索前一个元素:
ListIterator<T> it = list.listIterator();
while (it.hasNext()) {
T t = it.next();
T prev = it.previous();
}
Run Code Online (Sandbox Code Playgroud)
但是你不能直接用for-each来做.
作为标题的答案,而不是问题(考虑到并发操作)......
T current;
T previous;
{
ListIterator<T> lit = list.listIterator(index);
current = lit.hasNext()?lit.next():null;
previous = lit.hasPrevious()?lit.previous():null;
}
Run Code Online (Sandbox Code Playgroud)
我认为我找到了解决方案,事实上它很简单,但我无法删除这篇文章,因为它有答案。
我只是T t = list.get(i);在第二个 for 循环中添加,所有其他代码保持不变。
| 归档时间: |
|
| 查看次数: |
61720 次 |
| 最近记录: |