中压缩数组_Java稀梳数组,什么是稀梳数组?为什么使用稀梳数组?
生活随笔
收集整理的這篇文章主要介紹了
中压缩数组_Java稀梳数组,什么是稀梳数组?为什么使用稀梳数组?
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
別讓怯弱否定自己,別讓憊懶誤了青春。
簡(jiǎn)介
- 有些時(shí)候,一個(gè)二維數(shù)組中很多值默認(rèn)為0,因此很多無(wú)意義數(shù)據(jù),這個(gè)時(shí)候就可以使用稀梳數(shù)組,例如:一個(gè)棋盤 10*10,但是只落下了兩顆子,需要你保存整個(gè)棋盤的布局
原理
- 記錄數(shù)組一共有幾行幾列,有多少個(gè)地方存在不同的值
- 把不同值得元素及值記錄在一個(gè)全新創(chuàng)建的小規(guī)模的數(shù)組中,從而壓縮數(shù)據(jù)大小
示例
// 以上面5*5棋盤為例:// 2排第二個(gè)不同// 3排第3個(gè)不同int[] ints = {{5,5,2},{1,1,1},{2,2,2}} // 5行5列2個(gè)不同值相互轉(zhuǎn)化
// 原始數(shù)組int[][] ints = new int[5][5];ints[1][1] = 1;ints[2][2] = 2;for (int[] intArray : ints) {for(int intValue : intArray) {System.out.print(intValue+"t");}System.out.println();}// 輸出---------------0 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 // 轉(zhuǎn)化為稀疏數(shù)組--------------// 1.獲取有效值數(shù)量,遍歷二維數(shù)組得到有效的個(gè)數(shù)int sum = 0;for (int i = 0; i < ints.length; i++) {for (int j = 0; j < ints[i].length; j++) {if(ints[i][j] != 0){sum ++;}}}System.out.println(sum);// 轉(zhuǎn)化為稀疏數(shù)組-------------int[][] sparseArray = new int[sum+1][3];sparseArray[0][0] = 5;sparseArray[0][1] = 5;sparseArray[0][2] = sum;int sumSparse = 0;for (int i = 0; i < ints.length; i++) {for (int j = 0; j < ints.length; j++) {if(ints[i][j] != 0){sumSparse++;sparseArray[sumSparse][0] = i;sparseArray[sumSparse][1] = j;sparseArray[sumSparse][2] = ints[i][j];}}}for (int i = 0; i < sparseArray.length; i++) {System.out.printf("%dt%dt%dtn",sparseArray[i][0],sparseArray[i][1],sparseArray[i][2]);}// 輸出稀疏數(shù)組-------------5 5 2 1 1 1 2 2 2 // 還原稀疏數(shù)組-----------// 根據(jù)稀疏數(shù)組第一行生成數(shù)組長(zhǎng)度int renewArray[][] = new int [sparseArray[0][0]][sparseArray[0][1]];// 根據(jù)稀疏數(shù)組的值還原數(shù)組for (int i = 1; i < sparseArray.length; i++) {renewArray[sparseArray[i][0]][sparseArray[i][1]] = sparseArray[i][2];}for (int[] row : renewArray) {for(int data : row) {System.out.printf("%dt",data);}System.out.println();}應(yīng)用場(chǎng)景
- 用于壓縮數(shù)據(jù)
- 使用稀疏數(shù)組,保存棋盤、地圖之類的二維數(shù)組
- 把稀疏數(shù)組還原成原來(lái)的二維數(shù)組
本文作者《猿氏·凱》,如果雷同,純屬抄襲····
總結(jié)
以上是生活随笔為你收集整理的中压缩数组_Java稀梳数组,什么是稀梳数组?为什么使用稀梳数组?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 发布地图服务属性表_Web3D地图来了!
- 下一篇: java sl4j 日志_Java日志框