gpt4 book ai didi

java - 使用两个标识符(rowIndex、colIndex)比较数组的快速方法

转载 作者:行者123 更新时间:2023-11-30 07:19:22 26 4
gpt4 key购买 nike

您好,我正在开发一个使用 block 的 2d map 加载器。

我使用此方法来计算与屏幕边界相交的 block 的位置。

// left bottom
rect.x = x - x % chunkSize;
if (x < 0) rect.x -= chunkSize
rect.colIndex = (int) (rect.x / chunkSize);

rect.y = y - y % chunkSize;
if (y < 0) rect.y -= chunkSize;
rect.rowIndex = (int) (rect.y / chunkSize);

// right top
float x2 = x + width, y2 = y + height;

float rectX = x2 - x2 % chunkSize;
if (x2 < 0) rectX -= chunkSize;
int colIndex = (int) (rectX / chunkSize);

float rectY = y2 - y2 % chunkSize;
if (y2 < 0) rectY -= chunkSize;
int rowIndex = (int) (rectY / chunkSize);

rect.rows = rowIndex - rect.rowIndex + 1;
rect.cols = colIndex - rect.colIndex + 1;

for (int i = 0; i < rect.rows; i++) {
for (int j = 0; j < rect.cols; j++) {
Chunk chunk = chunkPool.obtain();
chunk.x = rect.x + chunkSize * j;
chunk.y = rect.y + chunkSize * i;
chunk.rowIndex = rect.rowIndex + i;
chunk.colIndex = rect.colIndex + j;
}
}

信息:

  • 如果添加了 chunk,则必须加载数据,如果删除了 chunk,则必须卸载数据。

  • 每次屏幕x/y/size发生变化时都会调用此方法。

我的问题是:我需要知道从最后一个数组中删除/添加了哪些 block 。我怎样才能做到这一点。为了进行识别,我将使用 rowIndex/colIndex 。它应该很快,因为它会被频繁调用。哈希表可以是一种选择吗?

最佳答案

哈希表只给你一个查找键,你需要按行和列查找值。因此,您需要创建一个复合键或使用类似表的数据结构来获取所需的 2 个维度。碰巧 Guava 已经在这里实现了: https://github.com/google/guava/wiki/NewCollectionTypesExplained#table

关于java - 使用两个标识符(rowIndex、colIndex)比较数组的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37842061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com