在没有数组变量的情况下迭代java中的静态数组

Xaq*_*Xaq 13 java arrays iteration foreach array-initialization

在Ruby中,我可以做类似的事情:

["FOO", "BAR"].each do { |str| puts str }
Run Code Online (Sandbox Code Playgroud)

迭代我正在使用它的语句中定义的数组.因为我可以在Java中定义一个数组,如:

String[] array = { "FOO", "BAR" };
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过设置一个循环来避免定义变量:

for (String str : new String[] { "FOO", "BAR" }) { ... }
Run Code Online (Sandbox Code Playgroud)

但是,我希望java可能有更简洁的东西,没有先定义包含数组的变量,并且还允许我避免动态分配,是否有如下语法:

for (String str : { "FOO", "BAR" }) { ... }
Run Code Online (Sandbox Code Playgroud)

这更简洁,适用于我缺少的Java,或者是我的唯一选择之上的解决方案?

san*_*hat 7

你能做的最好的就是

    for(String s : Arrays.asList("a", "b")) {
        System.out.println(s);
    }
Run Code Online (Sandbox Code Playgroud)

java.util.Arrays给出一个asList(...)var-arg方法的方法,它可以用来List动态创建(动态数组).

通过这种方式,您可以在同一语句中声明迭代数组


Jef*_*rey 6

在Java 8中,您将能够执行以下操作:

Stream.of("FOO", "BAR").forEach(s -> System.out.println(s));
Run Code Online (Sandbox Code Playgroud)

这使用了新的java.util.stream包和lambda表达式.