在Java中的foreach关键字是什么?

13
我了解编程中foreach的意义和使用方法。Java中是否有foreach关键字呢?我尝试查找关键字列表,但只有for而没有foreach。
7个回答

26
据我所知,Java没有像C#那样的foreach关键字。不过,你可以使用修改后的for循环遍历Iterable集合中的所有元素:
List<String> list = new ArrayList<String>();
...
for (String str : list)
{
    System.out.println(str);
}

查看此链接以获取更多信息。


附加信息:Eclipse定义了一个_foreach_代码模板,当您使用它时,将为您提供这种for循环... - quaylar

8

从Java 1.8开始,Java现在支持foreach循环...

package org.galarik.arick;

import java.util.ArrayList;
import java.util.List;

public class ExampleForEach {

    public static void main(String[] args) {
        List<String> strings = new ArrayList<>();
        strings.add("Mom");
        strings.add("Dad");
        strings.add("Dad's Java");
        strings.add("Mom's Java");

        // Original for loop
        int stringsSize = strings.size();
        Object[] oldStrings = strings.toArray();
        for(int stringIndex = 0; stringIndex < stringsSize; ++stringIndex ) {
            System.out.println("Original Content: " + oldStrings[stringIndex]);
        }

        // For loop, as of Jova 1.5
        for (String string : strings) {
            System.out.println("All Content: " + string);
        }

        // forEach loop as of Java 1.8
        strings.stream().forEach((string) -> {
            System.out.println("For Content: " + string);
        });

        // Using forEach loop to do a filter
        strings.parallelStream().filter(someString -> someString.contains("Java"))
                .forEach((someOtherString) -> {
                    System.out.println("Content With Java: " + someOtherString);
                });
    }
}

3
不,没有像foreach这样的关键字。 只是为了编码方便而添加了增强的for循环。 编译器会将其转换回旧的Java格式。 比如:
    List<String> list = new ArrayList<String>();
    for (String str : list)
    {
        System.out.println(str);
    }

将被转换为:

    List list = new ArrayList();
    String str;
    for(Iterator iterator = list.iterator(); iterator.hasNext(); System.out.println(str))
    {
        str = (String)iterator.next();
    }

3

不需要编号。要使用“foreach”语句,您可以编写for( Type variable : collection ){ .... }

(是的,我知道它不必是一个Collection,只需要是一个Iterable或数组 - 我只是在尽力清晰地表达)


2

第一,foreach 不是 Java 中的关键字。

foreach 循环是一种简单的语法,用于遍历数组或实现了 java.lang.Iterable 接口的集合。

在 Java 语言中,使用 for 关键字和 : 运算符来创建 foreach 循环。

// Java example
String[] oddBalls = {"one", "three", "five", "seven"};

for (String currentBall : oddBalls)
{
   System.out.println (currentBall + " is an odd number.");
}

基本的for循环在Java 5中得到了扩展,以使得对数组和其他集合进行迭代更加方便。这种新的for语句被称为增强型for循环foreach

1

foreach 不是 Java 关键字(IDE 会识别它并将 "For-each" 循环放入代码中)。


0
Java没有像C#一样的foreach关键字。如果我们在Java中使用foreach,它会显示错误。如果我们想要使用foreach,必须像下面这样实现。
//sample Java Code
List<WebElement> radioButtons = driver.findElements(By.name("color"));

for(WebElement  radioButton : radioButtons)
    {
        if(radioButton.isSelected())
        {
            System.out.println(radioButton.getAttribute("value"));      
        }
    }

这里我们有一个 Web 元素-单选按钮列表,我们正在检查每个元素是否符合特定条件。我们在 Java 中使用 for 关键字和 : 运算符。在 C# 中,我们可以像下面这样实现相同的场景。
//C# code Sample
foreach(WebElement radioButton in  radioButtons)
{
  //implementation comes here 
}

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