在Java之中,数组是一个很重要的数据结构,但数组在内存中开辟空间却是一个很大的问题;比如说,当我开辟了一个二维数组的时候,系统会基于我声明的数组来开辟空间,但是当我数组里面有很大一部分存储了相同的数据,就会产生内存的浪费,如图所示
而在这种情况下,就会有很大一部分的内存被浪费,所以,我们就可以采用稀疏数组的方式来存储这个二维数组的主要数据,可能这种说法比较抽象,举个例子吧,把这个二维数组看成一个棋盘,把1看成是黑子,把2看成白子,但是我要是想保留棋盘地话,就需要保留这个二维数组,但是除了那俩个棋子其实其他地方是没有用的,这个时候就运用到了稀疏数组。
稀疏数组也是二维数组,他是n行3列,n是原二维数组有效的数据个数+1,而3除了第一行以外,列的第一列是原数组的横坐标,第二列是原数组的纵坐标,第三列是对应的值;而在第一行里的三个数分别是原数组的行数、列数、和有效数值的个数,所以原数组的稀疏数组如图所示:
而这个稀疏数组存储的只是原二维数组有效数据以及有效数据所在的位置,就像下五子棋的时候保留本局棋局一样,等下次再次读取棋局的时候还需要将稀疏数组恢复到 原来的二维数组,恢复的方