06. 稀疏数组(压缩数据源)
一,稀疏数组
1.定义
稀疏数组可以看做是普通数组的压缩,但是这里说的普通数组是值无效数据量远大于有效数据量的数组
形如:
其稀疏数组形式:
2.存储
刚说到稀疏数组是一种压缩后的数组,为什么要进行压缩存储呢?
-
原数组中存在大量的无效数据,占据了大量的存储空间,真正有用的数据却少之又少
-
压缩存储可以节省存储空间以避免资源的不必要的浪费,在数据序列化到磁盘时,压缩存储可以提高IO效率
3.存储方式
1.普通存储
第一行存储原始数据总行数,总列数,总的非0数据个数
接下来每一行都存储非0数所在行,所在列,和具体值
形如:
eg :
2.链式存储
以这个为例:
a.普通链式存储

b.行式链式存储

c.十字链式存储

4.代码实现
3.将稀疏数组存到此磁盘中
我们可以使用java的IO流将稀疏数组存放到磁盘中,原数组和稀疏数组比较,肯定是稀疏数组体积更小,占用空间更小
4.从磁盘中读取稀疏数组
在这里有个缺陷就是我不能动态的知道稀疏数组一共有几行,所以我选择传参的方式,这样其实是不太友好的
恢复原数组

浙公网安备 33010602011771号