我正在考虑使用 HashMap 作为 QuadTree 的支持结构。我相信我可以使用 Morton 测序来唯一识别我感兴趣的区域的每个方格。我知道我的 QuadTree 的高度最多为 16。根据我的计算,这将导致一个 65,536 x 65,536 的矩阵,它最多应该给我 4,294,967,296 个单元格。有谁知道 HashMap 的元素是否太多?我总是可以使用 Tree 编写 QuadTree,但我认为使用 HashMap 可以获得更好的性能。
高度 1 == (2x2) == 4 的莫顿序列
高度 2 == (4x4) == 16 的莫顿序列
高度 3 == (8x8) == 64 的莫顿序列
最大高度为 3 的树的 Morton 测序示例。
这是我所知道的:
- 我将在已知的矩形区域上获取纬度/经度的数据。
- 数据不会完全覆盖整个区域,并且可能会在该区域的某个地方合并成块。(更糟糕的情况是所有 4,294,967,296 个单元格中的数据)
- 数据的分辨率最终将该区域分解为 65k x 65k 的矩形。
- 我也知道我可能会收到 10 到 1 个查询来插入/更新数据。