当前位置: 首页 > 面试题库 >

使用for语句和while语句向前移动Iterator的区别

柏明亮
2023-03-14
问题内容

当我使用对象的迭代器时,我会使用 while循环 (就像每本学习Java的书所写的那样,例如Bruce Eckel的《 Thinking in
Java
》):

Iterator it=...

while(it.hasNext()){
    //...
}

但有时我看到有人代替使用 for循环

Iterator it=...
for (Iterator it=...; it.hasNext();){
    //...
}

我不明白这个选择:

  • 当我有一个具有序数序列(作为数组)或该步骤的特殊规则(通常声明为简单的递增)时,可以使用 for循环counter++
  • 当循环结束时,我使用 while循环 ,但我没有此约束,而只是退出的逻辑条件。

这是没有其他原因的样式编码问题,或者存在我不知道的其他逻辑(例如性能)?

感谢您的每一个反馈


问题答案:

for循环的正确语法是:

for (Iterator it = ...; it.hasNext(); ){
    //...
}

代码中的前面的声明以及for循环标题中的多余分号都是多余的。)

无论您使用此语法还是while循环,都取决于品味,两者的含义完全相同。for循环的通用语法为:

for (<init stmt>; <loop cond>; <iterate stmt>) { <body>; }

等效于:

<init stmt>;
while (<loop cond>) { <body>; <iterate stmt>; }

编辑: 实际上, 如果
使用init语句声明了变量,则上述两种形式并不完全等效。在这种情况下,迭代器变量的范围将有所不同。对于for循环,在while循环的情况下,作用域仅限于循环本身,但是,作用域扩展到了封闭块的末尾(不足为奇,因为声明位于循环之外)。

另外,正如其他人指出的那样,在较新版本的Java中,for循环有一种简写形式:

for (Iterator<Foo> it = myIterable.iterator(); it.hasNext(); ) {
    Foo foo = it.next();
    //...
}

可以写成:

for (Foo foo : myIterable) {
    //...
}

使用这种形式,您当然会丢失对迭代器的直接引用,这是必需的,例如,如果要在迭代时从集合中删除项目。



 类似资料:
  • 着色器语言GLSL中关于if语句、for语句的使用,和javascript语言、C语言中的if语句、for语句执行逻辑规则基本一致,这里默认你已经有一定的编程基础,也就不做过多讲解,只是简单说明一下。 单独使用if if(x>100){ gl_FragColor = vec4(1.0,0.0,0.0,1.0);//红色 } if-else形式 bool colorBool; // 根据布尔值

  •  while 语句是在指定的条件为真的条件下,重复执行特定语句或代码段的语句。 while 语句可以用来编写循环。  语法如下文所示。 while(expression) 语句或代码段  「语句或代码段」将在条件表达式 expression 的求值结果为真的条件下被重复执行。  其实际操作是: (1) 首先,对 expression 进行求值,如果为假,则语句或代码段不会被执行,while 语句结

  • 问题内容: 我知道什么是循环(对键进行迭代),但是第一次听说(对值进行迭代)。 我对循环感到困惑。我没有形容词。这是下面的代码: 我得到的是,遍历属性值。那么,为什么它不记录(返回)而不是?但是循环遍历每个键()。在这里,循环还会遍历键。但是不会迭代财产的价值,即。为什么会这样呢? 总而言之: 在这里,我控制台循环。它应该记录,但是在这里记录。为什么呢 问题答案: 遍历对象的可枚举属性名称。 (E

  • 本文向大家介绍C#中循环语句:while、for、foreach的使用,包括了C#中循环语句:while、for、foreach的使用的使用技巧和注意事项,需要的朋友参考一下 循环结构可以实现一个程序模块的重复执行,它对于我们简化程序,更好地组织算法有着重要的意义。C#为我们提供了若干种循环语句,分别适用于不同的情形,下面依次介绍。 C#中循环语句:while、for、foreach   1、wh

  • while 语句可以在某个条件表达式为真的前提下,循环执行指定的一段代码,直到那个表达式不为真时结束循环。—— MDN while 语句也是一种循环语句,也称 while 循环。 while 循环接收一个表达式,当这个表达式结果非 false 的时候,就会执行 while 循环的代码块。 1. 基本语法 while (表达式) { 表达式结果为真时候执行的代码; } while 的语法相对简

  • 1. while语句 在第 3 节 “递归”中,我们介绍了用递归求n!的方法,其实每次递归调用都在重复做同样一件事,就是把n乘到(n-1)!上然后把结果返回。虽说是重复,但每次做都稍微有一点区别(n的值不一样),这种每次都有一点区别的重复工作称为迭代(Iteration)。我们使用计算机的主要目的之一就是让它做重复迭代的工作,因为把一件工作重复做成千上万次而不出错正是计算机最擅长的,也是人类最不擅