有没有一种方法来获取列表的元素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支持addsetremove操作。

就迭代机制而言,List与数组相比是另一个明显的优势。

10-07 13:11
查看更多