您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Java如何實現二維數組和稀疏數組之間的轉換的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
1.1 以二維數組的格式模擬棋盤、地圖等類似的二維結構為基礎,與稀疏數組之間進行轉化。
1.2 思路分析
二維數組轉化為稀疏數組
遍歷原始的二維數組,得到有效數據個數 sum
根據sum就可以創建稀疏數組sparseArr int[sunm+1][3]
將二維數組的有效數據存入到稀疏數組
稀疏數組轉為二維數組
先讀取稀疏數組的第一行,根據第一行的數據,創建原始的二維數組
再讀取稀疏數組后幾行的數據,并賦給原始的二維數組即可。
2.1 二維數組與稀疏數組之間的轉化程序
public class SparseArr { public static void main(String[] args) { // 創建一個原始的二維數組 11 * 11 // 0: 沒有棋子;1:黑棋;2:白棋 int[][] chessArr = new int[11][11]; chessArr[1][2] = 1; chessArr[2][3] = 2; chessArr[2][6] = 1; // 打印輸出原始二維數組 System.out.print("原始二維數組為:\n"); for(int[] a : chessArr ){ for (int item : a ){ System.out.printf( "%d\t", item ); } System.out.println(); } //將二維數組轉換為稀疏數組思路 // 1、遍歷二維數組,統計有效數據的個數sum int sum = 0; for(int i=0;i < chessArr.length;i++){ for(int j=0;j < chessArr[0].length;j++){ if(chessArr[i][j] != 0){ sum++; } } } System.out.println("有效數據的個數為:" + sum); //2、建立稀疏數組,行列值 int[][] sparseArr = new int[sum+1][3]; //3、遍歷原始二維數組轉換為稀疏數組中的數據 sparseArr[0][0] = 11; sparseArr[0][1] = 11; sparseArr[0][2] = sum; int count=1; for(int i=0;i < 11;i++){ for(int j=0;j < 11;j++){ if(chessArr[i][j] != 0){ sparseArr[count][0] = i; sparseArr[count][1] = j; sparseArr[count][2] = chessArr[i][j]; count++; } } } //4 輸出稀疏數組 System.out.println("稀疏數組為:"); for (int[] row : sparseArr) { // for (int data : row) { // System.out.printf( "%d\t",data); // } // System.out.println(); // } System.out.printf("%d\t%d\t%d\t\n", row[0],row[1],row[2]); } // 將稀疏數組轉化為二維數組 // 1.讀取稀疏數組首行數據,建立二維數組 int[][] chessArr2 = new int[sparseArr[0][0]][sparseArr[0][1]]; // 2. 遍歷稀疏數組,賦值給二維數組 for (int i=1;i < sparseArr.length;i++) { chessArr2[sparseArr[1][0]][sparseArr[1][1]] = sparseArr[i][2]; } // 3. 打印輸出原始的二維數組 System.out.print("原始二維數組為:\n"); for (int[] row : chessArr2) { for (int data : row) { System.out.printf("%d\t", data); } System.out.println(); } } }
2.2 二維數組轉化為稀疏數組展示
原始二維數組為: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 有效數據的個數為:3 稀疏數組為: 11 11 3 1 2 1 2 3 2 2 6 1 原始二維數組為: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
用Java語言實現二者之間的轉化,思路很重要,按著思路寫代碼就會很省事,難的點可能是不知道如何寫代碼。
注意:printf 和 print 輸出的格式不同。
感謝各位的閱讀!關于“Java如何實現二維數組和稀疏數組之間的轉換”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。