Java访问for each循环中的索引

4
我已经阅读过了

我已经读到

    for (int i1 : A) {
    }

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

如果我想访问第一个中的索引值,是否有办法或者只能使用第二个?

7个回答

3

Wikipedia指出:

foreach循环通常不维护显式计数器:它们基本上是说"对此集合中的所有内容执行此操作",而不是"执行x次此操作"。这避免了潜在的偏移错误,并使代码更易于阅读。

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

如果我想要访问第一个中的索引值,有什么方法吗?

是的,您可以。

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

但是,不建议这样做。如果您需要在增强for循环中获取索引,请重新考虑您的逻辑。

Java建议使用增强for循环:来源(请参见页面上的最后一行)。


0

使用这个或者最好选择第二个选项

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

0

你的第一段代码表示,遍历集合A中的所有项/对象, 但是最后一段代码说要遍历索引从0到n,n=>A的大小

在正常情况下,两者都可以工作,选择哪个通常取决于您可以使用哪个API循环。

在你的第一段代码中,适用于HashMap或未填充数组。 假设你有这个数据结构

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

在第一种情况下,只需循环遍历现有值即可。但在最后一种情况下,您必须循环遍历所有元素。
此外,无序或定义良好的数据结构(如Maps)可以具有保证您遍历所有元素但不按定义良好的顺序进行的方法。

0

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


0

0

你必须使用第二个。另一个选择是使用集合列表,如下所示:
List list = Arrays.asList(int a[]); list.get(int index);


0

不可以这样做。从程序员的角度来看,for-each循环被认为是更好的(引用你的问题),因为它没有计数变量。这意味着从程序员的角度来看,出错的地方就更少了。获取数据不是你作为程序员的任务。Java会使用for each帮助你完成。

当我不需要计数变量时,我倾向于使用for-each循环。如果我需要计数,则必须使用旧的for循环方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接