![]() |
1
1249
请注意,如果您需要使用
另外,如果
|
![]() |
2
529
构造 每人 也适用于数组。例如
因此,总体总结如下:
|
![]() |
3
178
这个
for-each loop
Java 5
(也称为“增强for循环”),相当于使用
每人
迭代器
For each与For循环:基本区别for循环和for each之间唯一实际的区别是,对于可索引对象,您无权访问索引。需要基本for循环时的示例:
尽管您可以手动创建一个单独的索引int变量,
variable-scope
For each与For循环:性能为基本int数组的迭代器访问和索引访问之间的差异计时
索引为23-
访问时比迭代器快%
我也跑了一段时间
对于集合,迭代器比索引快
并对测试功能进行必要的更改(
在一个测试中,它们几乎是等价的,但对于集合,迭代器获胜。
更多信息: Which is more efficient, a for-each loop, or an iterator? 完整的测试类this question 堆栈溢出时:
|
![]() |
4
133
这里有一个答案,它并不假定您了解Java迭代器。它不太精确,但对教育很有用。 编程时,我们通常编写如下代码:
|
![]() |
5
42
Java中的for-each循环使用底层迭代器机制。因此,它与以下内容相同:
|
![]() |
6
35
定义见 JLS
Java8引入了流,这些流在使用下降大小数据集时通常表现得更好。我们可以将其用作:
|
![]() |
7
25
nsayer的回答暗示了这一点,但值得注意的是,OP的for(..)语法在使用“someList”时会起作用 任何东西 它实现了java.lang.Iterable——它不必是列表,也不必是java.util的某个集合。因此,即使您自己的类型也可以与此语法一起使用。 |
![]() |
8
23
例子:
警告:必须将数组的类型与其他对象匹配。
如果要编辑图元,请使用原始图元
现在,如果我们将s转储到控制台,我们将得到:
|
![]() |
9
22
输出
|
![]() |
10
21
Java“for each”循环构造将允许对两种类型的对象进行迭代:
|
![]() |
11
17
维基百科中提到的foreach循环的概念如下所示:
但是假设列表以索引1开始,那么这个循环将抛出一个异常,因为它在索引0处找不到元素,并且这个错误被一个错误称为off。因此,为了避免一个错误导致这个错误,我们使用了foreach循环的概念。可能还有其他优点,但我认为这是使用foreach循环的主要概念和优点。 |
![]() |
12
16
使用for each循环一个列表
或
或
|
![]() |
13
12
这里有一个等价的表达式。
|
![]() |
14
12
|
![]() |
15
12
以下是最新的使用方法
(在列表中循环使用
|
![]() |
16
10
新的for循环更易于读取,并且不需要单独的迭代器,但它只在只读迭代过程中才真正可用。 |
![]() |
17
9
forEach的另一种选择是避免您的“针对每个人”:
变量2(并行执行(更快)):
|
![]() |
18
8
典型的
用于每个:
每人 迭代器 . 记住,您的集合应该实现 迭代器 ; 否则,您不能将其与for-each一起使用。 下一行的内容为“ "
每种情况下,发生错误的可能性都较小。您不必担心初始化迭代器或初始化循环计数器并终止它(如果存在错误范围)。 |
![]() |
19
8
在Java 8之前,您需要使用以下内容:
你可以找到更多关于流的信息 here . |
![]() |
20
7
它看起来像这样。非常粗糙。
每人 在 Sun documentation . |
![]() |
21
6
正如许多好答案所说,对象必须实现
我将发布一个简单的示例,并尝试以不同的方式解释
这个
那么,如果我们使用
从示例的最后一行可以看出,编译器将自动转换
|
![]() |
22
6
这个 Java for each loop (又名增强for循环)是for循环的简化版本。这样做的好处是可以编写更少的代码,管理更少的变量。缺点是您无法控制步长值,也无法访问循环体中的循环索引。 当步长值为1的简单增量且仅需要访问当前循环元素时,最好使用它们。例如,如果需要在数组或集合中的每个元素上循环,而不查看当前元素的前面或后面。 没有循环初始化,没有布尔条件,步长值是隐式的,是一个简单的增量。这就是为什么它们被认为比常规for循环简单得多的原因。 增强for循环遵循以下执行顺序: 1) 环体
整数数组示例
currentValue变量保存在intArray数组中循环的当前值。请注意,没有明确的步长值,它始终是1的增量。 可以认为冒号的意思是。因此,增强的for循环声明声明声明:在intArray上循环并存储当前数组的int值 currentValue变量。 输出:
我们可以使用for-each循环来迭代字符串数组。循环声明声明声明:在myStrings字符串数组上循环并存储当前字符串值 在里面 currentString变量。
输出:
示例列表
循环声明声明声明:在myList字符串列表上循环并存储当前列表值 在里面
范例集
循环声明声明声明:在mySet字符串集上循环并存储当前集值 在里面 currentItem变量。请注意,由于这是一个集合,因此不会存储重复的字符串值。
|
![]() |
23
5
正如许多其他答案正确指出的那样
为了回答这个问题,我创建了一个文件并编写了两个版本的
当我
|
![]() |
24
4
|
![]() |
25
3
每个习惯用法的Java只能应用于类型为的数组或对象 *宜人的 . 这个成语是 含蓄的 因为它真正由迭代器支持。迭代器由程序员编程,通常使用整数索引或节点(取决于数据结构)来跟踪其位置。从纸面上看,它比常规for循环慢,对于数组和列表等“线性”结构来说,它至少慢,但它提供了更大的抽象性。 |
![]() |
26
1
这很有效。 魔术 |
![]() |
27
0
我认为这会奏效:
|
![]() |
28
-1
守则是:
|