Java数组循环迭代

标签 java arrays

我有一个类型的函数: 我可以按如下方式迭代数组。 (标准示例) 可以循环数组并将元素返回到变量 x,如下所示。

public Map<String, String> (Object ... args)
{
   . . .
   for( Object x : args); // do stuff
   . . .
   dummyUsexAndPrint(x); // just demonstrating that we can now use x
                         // x will vary on each loop iteration.
}

我的目标是在不进行任何算术的情况下从数组中生成键值对。 我们可以“二乘二”地迭代循环吗? 像这样的东西---->

public Map<String, String> (Object ... args)
{
    . . .
    for( Object X : args, Object Y : args) {
        globalMap.put(X,Y); // using X and Y now, instead of just "x"         

                            //in the previous case
    }
    . . .
}

第一个案例与模式 (a_1, a_2 ...) 匹配。 同时,我需要匹配模式 (a_1, a_2, a_3 ...) 并在每次循环运行时提取 a_1 和 a_2。

这种模式匹配在 Java 中可行吗? 我还没有遇到过这样的例子,只是想验证一下。

编辑:

假设我们有一个数组 [1,2,3,4,5,6]。

一个简单的循环,例如

for (int x : array) { ...}

会给我 x 作为 1 2 3 4 5 6

我想要的是一次获取 2 个值。

for (int x,y : array) { ... }

1 2

3 4

5 6

其中左侧值为 x,右侧值为 y。

编辑2:

for (int i = 0 ; i == array.length - 1; i += 2)
{
x = array[i];
y = array[i + 1];
print(x, y);
}

这清楚了吗?

编辑:似乎没有办法逃避算术。我希望我的数组迭代可以在不进行算术的情况下完成,这会引发异常(这样我就不必检查偶数/奇数)。

契约(Contract)规定循环一次选择 2 个成员并循环。如果没有留下任何成员,则履行契约;如果留下一个成员,则违反一次分解两个值的契约并抛出异常。

没有这样的运气,在某些语言中可以直接匹配模式,而不是编写原始循环。我是 Java 新手,所以正在探索。

最佳答案

这两个答案都假设集合的长度是偶数(因为,显然,如果不是,那么每个 x< 都不会总是有一个 y/)。

对于T[] args:

for (int i = 0; i < args.length; i+=2) {
    T x = args[i];
    T y = args[i+1];

    // ... use x and y, e.g. System.out.println(x + " " + y);
}

对于T的一般集合:

boolean even = true;
T x = null;
for (T obj : args) {
    if (even) {
        x = obj;
    } else {
        T y = obj;

        // use x and y, e.g. System.out.println(x + " " + y);
    }
    even ^= true; // flip even
}

关于Java数组循环迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37713258/

相关文章:

javascript - 在 V8 中使用数组(性能问题)

javascript - 在 Meteor 的测验应用程序中显示提示

php - 无法正确创建数组

java - Selenium 在线游戏自动化

java - 如何将 Jersey+Grizzly jar 部署到 AWS

java - PhantomJS 中的 UnreachableBrowserException

c - 我不明白一些旧的 C 数组连接

java - 如何删除从 Web 服务返回的无法识别的字符?

java - 在 Spring XML 中声明整数、 double 、 float 、字符串等

javascript - jQuery - 使用 inArray() 查找 jQuery 对象的索引