Java實(shí)現(xiàn)二維數(shù)組和稀疏數(shù)組之間的轉(zhuǎn)換
前言
用Java實(shí)現(xiàn)二維數(shù)據(jù)和稀疏數(shù)組之間的轉(zhuǎn)換
1. 需求和思路分析
1.1 以二維數(shù)組的格式模擬棋盤、地圖等類似的二維結(jié)構(gòu)為基礎(chǔ),與稀疏數(shù)組之間進(jìn)行轉(zhuǎn)化。

1.2 思路分析
二維數(shù)組轉(zhuǎn)化為稀疏數(shù)組
- 遍歷原始的二維數(shù)組,得到有效數(shù)據(jù)個(gè)數(shù) sum
- 根據(jù)sum就可以創(chuàng)建稀疏數(shù)組sparseArr int[sunm+1][3]
- 將二維數(shù)組的有效數(shù)據(jù)存入到稀疏數(shù)組
稀疏數(shù)組轉(zhuǎn)為二維數(shù)組
- 先讀取稀疏數(shù)組的第一行,根據(jù)第一行的數(shù)據(jù),創(chuàng)建原始的二維數(shù)組
- 再讀取稀疏數(shù)組后幾行的數(shù)據(jù),并賦給原始的二維數(shù)組即可。
2.代碼實(shí)現(xiàn)和展示
2.1 二維數(shù)組與稀疏數(shù)組之間的轉(zhuǎn)化程序
public class SparseArr {
public static void main(String[] args) {
// 創(chuàng)建一個(gè)原始的二維數(shù)組 11 * 11
// 0: 沒(méi)有棋子;1:黑棋;2:白棋
int[][] chessArr = new int[11][11];
chessArr[1][2] = 1;
chessArr[2][3] = 2;
chessArr[2][6] = 1;
// 打印輸出原始二維數(shù)組
System.out.print("原始二維數(shù)組為:\n");
for(int[] a : chessArr ){
for (int item : a ){
System.out.printf( "%d\t", item );
}
System.out.println();
}
//將二維數(shù)組轉(zhuǎn)換為稀疏數(shù)組思路
// 1、遍歷二維數(shù)組,統(tǒng)計(jì)有效數(shù)據(jù)的個(gè)數(shù)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("有效數(shù)據(jù)的個(gè)數(shù)為:" + sum);
//2、建立稀疏數(shù)組,行列值
int[][] sparseArr = new int[sum+1][3];
//3、遍歷原始二維數(shù)組轉(zhuǎn)換為稀疏數(shù)組中的數(shù)據(jù)
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 輸出稀疏數(shù)組
System.out.println("稀疏數(shù)組為:");
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]);
}
// 將稀疏數(shù)組轉(zhuǎn)化為二維數(shù)組
// 1.讀取稀疏數(shù)組首行數(shù)據(jù),建立二維數(shù)組
int[][] chessArr2 = new int[sparseArr[0][0]][sparseArr[0][1]];
// 2. 遍歷稀疏數(shù)組,賦值給二維數(shù)組
for (int i=1;i < sparseArr.length;i++) {
chessArr2[sparseArr[1][0]][sparseArr[1][1]] = sparseArr[i][2];
}
// 3. 打印輸出原始的二維數(shù)組
System.out.print("原始二維數(shù)組為:\n");
for (int[] row : chessArr2) {
for (int data : row) {
System.out.printf("%d\t", data);
}
System.out.println();
}
}
}
2.2 二維數(shù)組轉(zhuǎn)化為稀疏數(shù)組展示
原始二維數(shù)組為: 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 有效數(shù)據(jù)的個(gè)數(shù)為:3 稀疏數(shù)組為: 11 11 3 1 2 1 2 3 2 2 6 1 原始二維數(shù)組為: 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. 總結(jié)
用Java語(yǔ)言實(shí)現(xiàn)二者之間的轉(zhuǎn)化,思路很重要,按著思路寫代碼就會(huì)很省事,難的點(diǎn)可能是不知道如何寫代碼。
注意:printf 和 print 輸出的格式不同。
參考視頻
尚硅谷Java數(shù)據(jù)結(jié)構(gòu)與java算法(Java數(shù)據(jù)結(jié)構(gòu)與算法)
到此這篇關(guān)于Java實(shí)現(xiàn)二維數(shù)組和稀疏數(shù)組之間的轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)Java 二維數(shù)組和稀疏數(shù)組轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java awt實(shí)現(xiàn)計(jì)算器功能
這篇文章主要為大家詳細(xì)介紹了java awt實(shí)現(xiàn)計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12
Java實(shí)現(xiàn)仿淘寶滑動(dòng)驗(yàn)證碼研究代碼詳解
這篇文章主要介紹了Java實(shí)現(xiàn)仿淘寶滑動(dòng)驗(yàn)證碼研究代碼詳解的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06
Java可變個(gè)數(shù)形參的方法實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于Java可變個(gè)數(shù)形參的相關(guān)資料,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-02-02
Java?深入理解創(chuàng)建型設(shè)計(jì)模式之抽象工廠模式
當(dāng)系統(tǒng)所提供的工廠所需生產(chǎn)的具體產(chǎn)品并不是一個(gè)簡(jiǎn)單的對(duì)象,而是多個(gè)位于不同產(chǎn)品等級(jí)結(jié)構(gòu)中屬于不同類型的具體產(chǎn)品時(shí)需要使用抽象工廠模式,抽象工廠模式是所有形式的工廠模式中最為抽象和最具一般性的一種形態(tài)2022-02-02
java實(shí)現(xiàn)后臺(tái)處理base64圖片還原為文件
這篇文章主要介紹了java實(shí)現(xiàn)后臺(tái)處理base64圖片還原為文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02

