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

时间:2013-07-03 16:37:45

标签: java arrays foreach iteration array-initialization

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

["FOO", "BAR"].each do { |str| puts str }

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

String[] array = { "FOO", "BAR" };

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

for (String str : new String[] { "FOO", "BAR" }) { ... }

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

for (String str : { "FOO", "BAR" }) { ... }

对于我缺少的Java,这是更简洁的解决方案,还是我已经超越了我唯一选择的解决方案?

4 个答案:

答案 0 :(得分:7)

你能做的最好的事情是

    for(String s : Arrays.asList("a", "b")) {
        System.out.println(s);
    }

java.util.Arrays提供了一个方法asList(...),这是一个var-arg方法,它可以用来动态创建List(动态数组)。

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

答案 1 :(得分:6)

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

Stream.of("FOO", "BAR").forEach(s -> System.out.println(s));

这会使用新的java.util.stream包和lambda expressions

答案 2 :(得分:1)

与像Ruby这样的简洁语言相比,像Java这样的语言非常冗长。在我看来,你已经拥有的是最好的选择:

for (String str : new String[] { "FOO", "BAR" }) { ... }

答案 3 :(得分:1)

我认为你的问题是关于收藏的语法糖和任何东西。但是,在Java 8中,您可以说

Arrays.asList("a", "b").forEach(System.out::println);

您可以在其中替换自己与Consumer<T>兼容的方法文字。