java - 从 arraylist 创建二维数组

标签 java arrays arraylist

我有一个常量 2d int 数组,声明为:

int blocked[][] = new int[][] { { 0, 4 }, { 2, 2 }, { 3, 1 }, { 3, 3 } };

但是,我想做的是动态生成精确的数组。所以我创建了一个数组列表,我在其中分别添加每个整数,0,4,2,3 ... N。然后我使用 for 循环进入 arraylist 并创建一个二维数组。但不知何故,我就是无法让它工作。我不知道我哪里做错了。

        ArrayList<Integer> blocklist = new ArrayList<Integer>();


    int blocked[][];

    blocklist.add(0);
    blocklist.add(4);
    blocklist.add(2);
    blocklist.add(2);
    blocklist.add(3);
    blocklist.add(1);
    blocklist.add(3);
    blocklist.add(3);

    blocked = new int[blocklist.size()][2];


    for(int i=0; i+2 < blocklist.size(); i++){
        blocked[i][0] = blocklist.get(i);
        blocked[i][1] = blocklist.get(i+1);
    }


    for(int i=0;i<blocked.length;++i){
        System.out.print(blocked[i][0]);
    }

当我做 Arrays.deepToString(blocked); 我得到 [[0, 0], [4, 4], [2, 2], [2, 2], [3, 3], [1, 1], [3, 3], [3 , 3]] 但它应该是 [[0, 4], [2, 2], [3, 1], [3, 3]]

最佳答案

ArrayList<Integer> blocklist = new ArrayList<Integer>();

        int blocked[][];

        blocklist.add(0);
        blocklist.add(4);
        blocklist.add(2);
        blocklist.add(2);
        blocklist.add(3);
        blocklist.add(1);
        blocklist.add(3);
        blocklist.add(3);



        blocked = new int[(blocklist.size()/2)][2];

        for (int i = -1, j = 0,k=0; k < blocklist.size(); j++) {
            blocked[j][0] = blocklist.get(++i);
            blocked[j][1] = blocklist.get(++i);
            k+=2;
        }

        for (int i = 0; i <(blocklist.size()/2);i++) {
            for (int j = 0; j < 2; ++j) {
                System.out.print(blocked[i][j]);
            }
        }

    System.out.println();
    String deepToString = Arrays.deepToString(blocked);
    System.out.println("string: "+deepToString);

output: 
04223133
string: [[0, 4], [2, 2], [3, 1], [3, 3]]

关于java - 从 arraylist 创建二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35316833/

相关文章:

java - 如何计算 00 :00:00 a. m 的日期。今天的?

java - 了解设备是否移动并注册 GPS 坐标

java - 使用 ANativeWindow_lock 返回错误 -22 与 android Gstreamer SDK

C++ 返回结构数组

ios - Swift - 确定 Array1 是否至少包含一个来自 Array2 的对象

java - 随机化 ArrayList 中的项目子集

java - 关于在 Eclipse 中调试 SWIG 包装的 C++ 代码的技巧?

c++ - 将动态二维数组中的所有值设置为设定值

ios - 从单个数组创建嵌套数组

android - ListView 的自定义基础适配器