稀疏数组

扫码查看

一、概念

  SparseArray 主要用于对数据压缩,就拿一个存储五子棋的游戏来实现

 这个棋盘的格局11×11,默认为0,黑子用1代替,蓝子用2代替,如果直接存储会浪费很多空间。

二、实现

  这里采用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\t", 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\n", 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\t", v)
        }
        fmt.Println()
    }
}

打印输出

12-24 13:49
查看更多