【发布时间】:2012-10-19 10:53:59
【问题描述】:
我已经看过了
for (int i1 : A) {
}
优于
for (int i1=0; i1 < A.length; i++) {
}
但是如果我想在第一个中访问索引值,有什么意思还是应该只使用第二个。
【问题讨论】:
标签: java loops foreach indexing
我已经看过了
for (int i1 : A) {
}
优于
for (int i1=0; i1 < A.length; i++) {
}
但是如果我想在第一个中访问索引值,有什么意思还是应该只使用第二个。
【问题讨论】:
标签: java loops foreach indexing
维基百科指出:
foreach 循环通常不维护明确的计数器:它们本质上是说“对这个集合中的所有内容执行此操作”,而不是“执行此操作 x 次”。这避免了潜在的错误,并使代码更易于阅读。
如果要使用索引,最好使用后面的版本。
如果我想在第一个访问索引值有什么意思
是的,你可以
int index = 0;
for (int i1 : A)
{
// Your logic
// index++;
}
但同样,不推荐。如果您需要Enahanced for loop 中的索引,请重新考虑您的逻辑。
Java 推荐使用增强的 for 循环:Source(见页面最后一行)
【讨论】:
不,没有。你只需要声明一个变量。在这种情况下,最好只使用传统的。
【讨论】:
使用此选项或最好使用第二个选项
int count = 0;
for (int i1 : A) {
print count;
count ++;
}
【讨论】:
【讨论】:
你必须使用第二个。您的另一个选择是使用集合列表作为List list = Arrays.asList(int a[]);
list.get(int index);
【讨论】:
您的第一个代码说,遍历集合 A 中的所有项目/对象,
但是最后的代码说要通过索引from 0 to n, n=>size of A
在正常情况下两者都可以工作,选择什么通常取决于您可以使用哪个 API for 循环。
您的第一个代码适用于 HashMap 或不填充数组。 假设你有这个数据结构
A = [1,2,3,NULL,NULL,4,NULL,5]
在您的第一种情况下,可以只遍历现有值。 但在最后一种情况下,您必须遍历所有元素。
此外,像地图这样的无序或明确定义的数据结构可以有一种方法来保证您遍历所有元素,但不是按照明确定义的顺序。
【讨论】:
不,你不能。 for-each 被认为更好(引用您的问题),因为它没有 count 变量。这意味着从程序员的角度来看,出错的地方更少。检索数据不取决于程序员。 Java 使用 for each 为您做到这一点。
每当我不需要计数器变量时,我倾向于使用 for-each。如果我需要计数,那么我必须使用旧样式的 for 循环。
【讨论】: