问题
我正在使用迭代器迭代一个集合,我想得到当前元素的索引。
我怎样才能做到这一点?
#1 热门回答(81 赞)
我有同样的问题,发现使用ListIterator工作。与上述测试类似:
List list = Arrays.asList("zero", "one", "two");
ListIterator iter = list.listIterator();
while (iter.hasNext()) {
System.out.println("index: " + iter.nextIndex() + " value: " + iter.next());
}
确保在实际获得next()之前调用nextIndex。
#2 热门回答(78 赞)
使用你自己的变量并在循环中递增它。
#3 热门回答(22 赞)
这是使用你自己的变量并保持简洁的方法:
List list = Arrays.asList("zero", "one", "two");
int i = 0;
for (Iterator it = list.iterator(); it.hasNext(); i++) {
String s = it.next();
System.out.println(i + ": " + s);
}
输出(你猜对了):
0: zero
1: one
2: two
优点是你不要在循环中增加索引(尽管你需要注意每个循环只调用Iterator#next - 只需在顶部执行)。