有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

for循环Java直接遍历数组而不是数组变量

例如,在某些语言中,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) 个答案

  1. # 1 楼答案

    I want to iterate through an array without having to create a variable.

    您需要将循环更改为:

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

    信用证:Jacob G.

  2. # 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);
    
  3. # 3 楼答案

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

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

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

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

    然而,我不会在现实生活中这样做。我只想写一本书

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

    或许

    IntStream.rangeClosed(1, 4)