稀疏数组

一、概念

  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()
    }
}

打印输出

原文地址:https://www.cnblogs.com/fanxp/p/12100848.html