将2D阵列转换为1D阵列,存储2D阵列位置(col,行)和1D阵列中的值

时间:2013-03-11 18:27:27

标签: java

我已设法将其转换为输出2D数组中的值,但不知道如何获得该位置。

这是我的代码:

public static int[] convert(int [][]twodarray)
{
    int[] onedarray = new int[twodarray.length * twodarray.length];
    for(int i = 0; i < twodarray.length; i ++)
    {
        for(int s = 0; s < twodarray.length; s ++)
        {
            onedarray[(i * twodarray.length) + s] = twodarray[i][s];
        }
    }
    return onedarray;
}

public static int [] printonedarray(int [] onedarray)
{
    System.out.print("onedarray: ");

    for(int i = 0; i < onedarray.length; i++) 
    {

            System.out.print(onedarray[i] + "\t");

    }
    System.out.println();
    return onedarray;
}

2 个答案:

答案 0 :(得分:0)

假设您的2-d数组不是锯齿状数组,则A[i]的原始坐标应为A[i/x][i%x],其中x是最低有效列的原始长度2 / d array

答案 1 :(得分:0)

好的,我不确定我是否能得到你的相关信息。但我这样理解:
你有一个2昏暗。数组,并希望将其转换为1昏暗。阵列。
因此,您想要准备第一个coloumn和第一行。
然后你想在1 dim的forst位置添加这个值。阵列。
然后你阅读下一行并想要添加这个值,依此类推。
如果我是对的,我建议你的1 dim数组的arrayList。因为你不知道coloumns有多深。 ArrayLists是动态的。你可以简单地添加一个元素,而不需要给出一个位置 您的代码建议非常好,我只是将其转换为ArrayList。

import java.util.ArrayList;

    public class test
    {

    public static ArrayList<Integer> convert(int [][]twodarray)
    {
        ArrayList<Integer> onedarray = new ArrayList<Integer> ();
        for(int i = 0; i < twodarray.length; i ++)
        {
            for(int s = 0; s < twodarray[i].length; s ++)
            {
                onedarray.add(twodarray[i][s]);
            }
        }
        return onedarray;
    }

    public static ArrayList<Integer> printonedarray(ArrayList<Integer> onedarray)
    {
        System.out.print("onedarray: ");

        for(int i = 0; i < onedarray.size(); i++) 
        {

                System.out.print(onedarray.get(i) + "\t");

        }
        System.out.println();
        return onedarray;
    }
}

如果我错过了你的问题,我很抱歉“错误的”答案。
我希望它能帮到你!