有没有一种方法来获取列表的元素ID,以便以后通过list.get(index)
来获取它
使用时
for(Object obj: o)
build
只定义一个本地变量并手动递增它?
有没有更简单的方法?
最佳答案
不,for-each
循环不跟踪索引。您可以使用常规索引循环,也可以执行以下操作:
int idx = 0;
for (Object o : list) {
...
idx++;
}
这是有风险的,因为
break
/continue
将使idx
不同步,因此请很少使用它,并且仅在主体简单且只有几行长的情况下使用。如果元素是不同的,尽管
List.indexOf
, O(N)
也将起作用,此时,您可能需要考虑Set
(无序,但保证是不同的)。还应该说,有时使用
listIterator()
还可以减轻迭代时对显式索引的需求。ListIterator
支持add
,set
和remove
操作。就迭代机制而言,
List
与数组相比是另一个明显的优势。