Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用“a”是否更好;“部分”;此代码的for循环还是while循环?_Java_Loops - Fatal编程技术网

Java 使用“a”是否更好;“部分”;此代码的for循环还是while循环?

Java 使用“a”是否更好;“部分”;此代码的for循环还是while循环?,java,loops,Java,Loops,我刚刚遇到了以下代码: for(Iterator<String> iterator = stuff.iterator(); iterator.hasNext();) { ... } ? 任何人都可以想到使用进行的具体原因吗?哪种方法更好?什么是东西?你能申请吗 显式使用迭代器的唯一原因是在使用iterator.remove()循环时删除某些元素 for (String string : stuff) { ... } 要干净得多,而且很少实际使用迭代器 增强的for循

我刚刚遇到了以下代码:

for(Iterator<String> iterator = stuff.iterator(); iterator.hasNext();) {
   ...
}
?


任何人都可以想到使用
进行
的具体原因吗?哪种方法更好?

什么是
东西
?你能申请吗

显式使用迭代器的唯一原因是在使用
iterator.remove()
循环时删除某些元素

for (String string : stuff) {
    ...
}
要干净得多,而且很少实际使用
迭代器

增强的for循环可以应用于任何实现的对象,这些对象只需要
iterator()
方法

如果这是不可能的,我更喜欢第一个版本,因为它限制了迭代器的范围,而不需要额外的一组括号(您可以将
版本包装在
{}
中,以获得相同的效果,但具有额外的缩进级别)。

为什么不使用foreach循环?从1.5

for (Element el : collection) {
  // do whatever
}

for循环更好,因为迭代器的范围仅限于循环内部。

据我所知,除了个人偏好之外,没有什么真正的区别。我想有些人可能更喜欢“for…”变体,因为它使用的代码少了一行,但我发现它更难阅读。for循环的“误用”是什么?在这种情况下,我可能可以使用foreach。。。但是,如果它不是一个本地Java集合,并且是用户定义的,那么for each不能使用,但它有自己的迭代器呢?只要实现Iterable,以便为自己的对象启用for each。如果它是一个旧的(即使用Java 1.4或更早版本编写的)第三方库,那么我更喜欢while循环。它更干净,使代码更可读。
for (String string : stuff) {
    ...
}
for (Element el : collection) {
  // do whatever
}