假设我有一张表示室内地图的图像。在这张地图上,某些区域是“允许的”,其他的则不是。然后我会定期获得一组坐标(x,y)
,并且需要检查它们是否在“允许”区域中。代表室内地图的数据结构
目前,我用boolean[][] map
变量表示此地图,其中true
表示允许。要检查,我只是检查值map[x][y]
但是,我代表的图像可能会变得相当大,比方说最大5000x5000像素。因此,我的map
变量在内存中变得过大(在这种情况下,假设boolean
需要大约1个字节,则为25MB)
是否有更好的数据结构,用于解决我的问题?我现在想了一会儿,但看不到任何需要更少空间的东西。
在此先感谢!
我喜欢你的想法,唯一的缺点是增加了构建这些Rect对象的复杂性。数据来自包含0和1行的csv文件。我想我可以使用递归算法来构建这些Rects ...,但不是微不足道! – chopchop
我明白了。但是你知道 - 如果数据是以一种很难处理的格式发布的,那么我怀疑你没有其他选择。我个人会使用'Rect' /多边形方法,因为大多数平面地图可以用它们来表示。考虑到节省的内存量,算法会得到回报。请记住 - Android设备具有16/24/32MB内存限制/进程! – andr
好,非常感谢,猜测我要咬紧牙关,写出算法来生成poylgons。 – chopchop