一、概念
SparseArray 主要用于对数据压缩,就拿一个存储五子棋的游戏来实现
这个棋盘的格局11×11,默认为0,黑子用1代替,蓝子用2代替,如果直接存储会浪费很多空间。
通过定义一个对象来存储每一个数据的位置和值,就可以减少存储空间的浪费
黑子:Row:1 Column:2 Value:1
蓝子:Row:2 Column:3 Value:3
二、实现
这里采用go语言实现
package main import "fmt" type Node struct { Row int Column int Value int } //棋盘格局 const ROW, COLUMN int = 11, 11 func main() { //创建一个原始的二维数组 var dataMap [ROW][COLUMN]int dataMap[1][2] = 1 dataMap[2][3] = 2 //数据存储 nodes := []Node{ Node{ Row: ROW, Column: COLUMN, Value: 0, }, } fmt.Println("打印棋盘数据----------------------------") for i, r := range dataMap { for j, v := range r { fmt.Printf("%d ", v) if v != 0 { nodes = append(nodes, Node{ Row: i, Column: j, Value: v, }) } } fmt.Println() } fmt.Println("打印保存数据----------------------------") for _, item := range nodes { fmt.Printf("%d %d %d ", item.Row, item.Column, item.Value) } fmt.Println("打印还原数据----------------------------") if len(nodes) == 0 { return } var restoreData [ROW][COLUMN]int for _, item := range nodes[1:] { restoreData[item.Row][item.Column] = item.Value } for _, r := range restoreData { for _, v := range r { fmt.Printf("%d ", v) } fmt.Println() } }
打印输出