Java直接通过数组而不是数组变量进行迭代

时间:2019-08-28 20:30:54

标签: java for-loop

例如,在某些语言中,Python可以直接遍历数组:

for i in [1, 2, 3, 4]:
    print(i)

我知道Java可以通过for (type var : var2)遍历变量,然后可以跳过该变量并直接遍历数组吗?例如:

for (int i : [1, 2, 3, 4]) {
    System.out.println(i);
}

3 个答案:

答案 0 :(得分:2)

  

我想遍历数组而不必创建一个   变量。

您需要将循环更改为此:

for (int i : new int[] {1, 2, 3, 4}) {
    // do something (4 iterations)
}

信用:Jacob G.

答案 1 :(得分:2)

如果您真的想避免使用方括号语法,也可以执行以下操作:

for (int i : Arrays.asList(1,2,3,4)) {
    System.out.println(i);
}

这将与创建Array有效地做同样的事情,但是您是在固定大小的List上进行迭代。

注意:该答案主要是为了获取知识,实际上,您不应该这样做,并且更喜欢使用new int[]{}而不是导入Arrays库并将值装箱为List

您可能会看到使用asList()的更传统的方式类似于:

Arrays.asList(1,2,3,4).forEach(System.out::println);

答案 2 :(得分:1)

可以,当然可以创建以下实用程序:

class ArrayUtils {
    static int[] of(int... array) {
        return array;
    }
}

然后使用import static ArrayUtils.of静态导入此方法。现在您有一个简短的表达:

for (int i : of(1, 2, 3, 4)) { ... }

但是,在现实生活中,我不会这样做。相反,我只是写一个ol's skool

for (int i = 1; i <= 4; i++) { ... }

或者也许

IntStream.rangeClosed(1, 4)