1. 程式人生 > 實用技巧 >普通陣列和稀疏陣列的相互轉換--棋盤存檔

普通陣列和稀疏陣列的相互轉換--棋盤存檔

如圖:

public class App
{

    public static void main( String[] args )
    {
        int[][] checkerboard = new int[11][11]; //原始陣列
        checkerboard[1][2]=1;
        checkerboard[2][3]=2;
        int [][] sparseArray=transtoSparseArray(checkerboard);
        System.out.println("原始陣列。。。。。。。。。。");
        printArray(checkerboard);
        System.out.println(
"稀疏陣列。。。。。。。。。。"); printArray(sparseArray); System.out.println("稀疏陣列轉原始陣列。。。。。。。。。。"); printArray(transToPlainArray(sparseArray)); } private static void printArray(int[][] sparseArray){ for (int[] arr : sparseArray) { for (int i : arr) { System.out.print(i); System.out.print(
" "); } System.out.println(""); } } private static int[][] transtoSparseArray(int[][] plainArray){ int sum=0; for (int[] rows : plainArray) { for (int row : rows) { if(row!=0){ sum++; } } }
//稀疏陣列 int[][] sparseArray = new int[sum + 1][3]; sparseArray[0][0]=11; sparseArray[0][1]=11; sparseArray[0][2]=sum; int row=1; for (int i = 0; i < plainArray.length; i++) { int[] arr=plainArray[i]; for (int j = 0; j < arr.length; j++) { int k=arr[j]; if(k!=0){ sparseArray[row][0]=i; sparseArray[row][1]=j; sparseArray[row][2]=k; row++; } } } return sparseArray; } private static int[][] transToPlainArray(int[][] sparseArray){ //稀疏陣列轉普通陣列 int row = sparseArray[0][0]; int cl = sparseArray[0][1]; int[][] plainArrays = new int[row][cl]; for (int i = 1; i < sparseArray.length; i++) { int[] arr=sparseArray[i]; for (int j = 0; j < arr.length; j++) { int r=arr[0]; int c=arr[1]; int v=arr[2]; plainArrays[r][c]=v; } } return plainArrays; } }


測試結果: