不是辞安
本帖最后由 不是辞安 于 2022-2-20 17:06 编辑

如题,已知两个Location,怎么遍历这两个Location内所有的方块,就跟WE的fill指令一样
我最初使用的方法如下

for (int x=0;x<=start.getX()-stop.getX();x++) {
    for (int y=0;y<=start.getY()-stop.getY();y++) {
        for (int z=0;z<=start.getZ()-stop.getZ();z++) {
            blocks.put(new Location(world,x,y,z),world.getBlockAt(new Location(world,x,y,z)));
        }
    }
}

请问有什么问题需要纠正?或者有没有更好的办法?




Hueihuea
不需要更好的方法,
这种遍历方式时间复杂度是O(n) [遍历次数=数据量即你的方块数]
没有继续优化的必要
非要说优化,比起修改遍历方式,你更应该异步这样子的过程。

不是辞安
Hueihuea 发表于 2022-2-20 17:57
不需要更好的方法,
这种遍历方式时间复杂度是O(n) [遍历次数=数据量即你的方块数]
没有继续优化的必要

明白了,谢谢

Lss233
Hueihuea 发表于 2022-2-20 17:57
不需要更好的方法,
这种遍历方式时间复杂度是O(n) [遍历次数=数据量即你的方块数]
没有继续优化的必要

不能异步吧。方块状态可能会在异步过程中改变的

Hueihuea
Lss233 发表于 2022-2-21 09:55
不能异步吧。方块状态可能会在异步过程中改变的

想办法异步 比如CAS
异步不异步 如何异步根据具体情况
你遍历的目的决定