获取new for循环的索引

时间:2013-04-17 11:25:14

标签: java for-loop

我有一个以下的循环

ArrayList<User> userList;
for(User user:userList){
    ....
}

如何获取即将使用的当前obj的索引? 我可以改变它常规的for(int i...)循环,但这会产生反作用。

感谢。

5 个答案:

答案 0 :(得分:3)

如果你想使用索引,那么使用for(int i...)是完全合理的。

答案 1 :(得分:3)

你必须像这样使用你自己的计数器

int counter = 0;
ArrayList<User> userList;
for(User user:userList){
    ....

counter++;
}

这是因为每个循环的java都基于迭代器而不是基于索引的迭代。实际上foreach循环内部使用迭代器。所以它没有任何索引。它会自动移动到集合或列表的项目上,并根据需要获取对每个项目的引用。

查看此图片

enter image description here

这样迭代器就可以遍历没有索引的每个元素或对象。所以作为for循环。

或者您可以使用

User user = null;

for (int counter = 0; counter < userList.size(); counter++) {
   user  = userList.get(counter);
}

答案 2 :(得分:2)

您可以使用单独的计数器:

int index = 0;
for (User user: list) {
    //use index
    index++;
}

但说实话,如果你确实需要索引,那么使用普通的for循环可能更容易:

for (int i = 0; i < list.size(); i++) {
    User user = list.get(i);
}

答案 3 :(得分:2)

这种类型的循环称为 foreach 循环..它迭代集合元素 所以没有真正的索引..它就像矢量有迭代器(如果你在c ++中知道stl)

你说的常规for循环(for(int i = 0 ...))将根据需要给出索引

答案 4 :(得分:1)

我担心你必须使用这个或与计数器的for循环。没有其他办法。

int index = 0;
for(User user:userList){
    ....
    index++;
}