当前位置: 首页 > 知识库问答 >
问题:

从两个或多个不同长度的数组逐个循环索引数组

谭刚毅
2023-03-14

Hy,我想做一个方法,从三个不同的数组中得到一个数组,具有不同的长度索引,如:

[数组中的元素数][数组数]

[0][0],

[0][1],

[0][2],

[1][0],

[一][二]

所以我做了这个:

    int a = 0;
    for (int i = 0; i < collections[a].length; i++) {
        for (int k = 0; k < collections.length; k++) {
            result[p] = collections[i][k];
            p++;
        }
    }

    return result;

但它只适用于当数组是相同的大小,我不知道应该添加什么条件,以避免"出界"时,从第二个元素的第一个数组到第二个元素的第三个数组不包括第二个元素的第二个元素甚至不存在的数组。

int[] array3 = { 10, 20, 30, };
int[] array4 = { 40, 50, };
int[] array5 = { 60, 70, 80, 90 };
A.method(array3, array4, array5);

我想得到的结果是:10,40,60,20,50,70,30,80,90

共有1个答案

危卜鹰
2023-03-14

首先,我找到哪个数组具有最大长度。然后我开始两个循环。外部循环索引j用于访问单个数组的元素,只有在循环遍历所有单个数组一次后,才会递增这些元素。一旦j达到第一步计算的最大长度,我就停止递增j

private static int[] combine(int[]... arrays) {

    int maxArrayLen = Arrays.stream(arrays).mapToInt(array -> array.length).max().getAsInt();

    List<Integer> list = new ArrayList<Integer>();
    for (int j = 0; j < maxArrayLen; j++) {
        for (int i = 0; i < arrays.length; i++) {
            if (arrays[i].length > j) {
                list.add(arrays[i][j]);
            }
        }
    }
    return list.stream().mapToInt(i -> i).toArray();
}

要调用此命令:combine(array3、array4、array5)

正在运行演示:https://ideone.com/F2yxKh

 类似资料:
  • 问题内容: 我想使用两个数组生成一个,一个包含国家/地区代码,另一个包含国家/地区名称。 这是一个例子: 这种方法对我不起作用。有什么建议么? 问题答案: 那是无效的。 您可能想要这样的东西… 另外,使代码成为数组的键会容易得多…

  • 问题内容: 我可以仅在AngularJs中使用一个数组同时遍历两个数组吗?如果是这样,那又如何? 例如我有两个数组 它应该能够为两个数组产生相同的索引。 问题答案: 如果要使用第一个数组的索引访问第二个数组,请尝试以下操作: 看到这个小提琴:http : //jsfiddle.net/dm9zhgx9/

  • 问题内容: 学生的姓名(String [])和相应的标记(int [])存储在不同的数组中。 如何使用Java中的每个循环一起遍历两个数组? 一种简单的方法是在同一循环中使用索引变量。有什么好办法吗? 问题答案: 潜在的问题实际上是您应该将两个数组绑定在一起,并且仅跨一个数组进行迭代。 这是一个非常简单的演示-您应该使用getter和setter,还应该使用a 而不是数组,但这证明了这一点:

  • 问题内容: 我有这个数组: 我想根据索引是偶数还是奇数将其分为两个数组,如下所示: 提前致谢! 问题答案: 一种解决方案,使用匿名函数和: 这样就可以将数组中的项一次分离出来,但是有点“聪明”。确实没有比经典的,更冗长的更好

  • 我有以下代码: 现在我想再组合一个数组和中的它的值。这是foreach语句中的三个数组。谁能帮我把它加进去。比如我们如何在foreach语句中添加多个。 例如,我想要以下内容: 但是上面的代码给出了。我得到的错误是 分析错误:语法错误,在/homepages/4/d864452909/htdocs/public_html/app/index.php第58行中,意外的“=>”(T_DOUBLE_AR