Java为每个循环访问索引

时间:2012-10-30 05:39:08

标签: java loops foreach indexing

我已经读过那个

    for (int i1 : A) {
    }

优于

    for (int i1=0; i1 < A.length; i++) {
    }

但如果我想在第一个中访问索引值有任何意思,或者我应该只使用第二个。

7 个答案:

答案 0 :(得分:3)

维基百科声明:

  

foreach循环通常没有明确的反击:他们基本上说“对此集合中的所有内容执行此操作”,而不是“执行此x次”。这可以避免潜在的逐个错误,并使代码更易于阅读。

如果您想使用索引,最好使用后一版本。

  

如果我想在第一个中访问索引值,那么有任何意思

是的,你可以

int index = 0;
for (int i1 : A) 
{
    // Your logic
    // index++;
}

但是再次,不推荐。如果您需要Enahanced for loop中的索引,请重新考虑您的逻辑。

Java建议使用enahanced for循环:Source(参见页面的最后一行)

答案 1 :(得分:0)

不,没有。你只需要声明一个变量。在这种情况下,最好只使用传统的。

答案 2 :(得分:0)

使用此选项或最佳选择第二个选项

  int count = 0;
 for (int i1 : A) {
    print count;
    count ++;
    }

答案 3 :(得分:0)

如上所述,请不要再看一下这个类似的问题Is there a way to access an iteration-counter in Java's for-each loop?

答案 4 :(得分:0)

你必须使用第二个。您的另一个选择是使用集合列表作为
List list = Arrays.asList(int a[]); list.get(int index);

答案 5 :(得分:0)

你首先代码说,浏览集合A中的所有项目/对象, 但是最后一段代码说要通过索引from 0 to n, n=>size of A

在正常情况下两者都可以使用,选择的内容通常取决于您可以使用的循环API。

在你的第一个代码适用于HashMap或不填充数组。 假设您拥有此数据结构

A = [1,2,3,NULL,NULL,4,NULL,5]

在第一种情况下,可以仅循环显示现有值。 但在最后一种情况下,你必须遍历所有元素。

此外,像Maps这样无序或定义良好的数据结构可以有一种方法可以保证您浏览所有元素,但不能以明确定义的顺序进行。

答案 6 :(得分:0)

不,你不能。 for-each被认为更好(引用你的问题),因为它没有count变量。这意味着从程序员的角度来看,出错的地方更少。程序员无法检索数据。 Java为你做了每个人。

每当我不需要计数器变量时,我倾向于使用for-each。如果我需要计数,那么我必须使用旧样式进行循环。