我有坐标的大名单(此表):优化建议(HashMap的)
if(x == 1055 && y == 63 && z == 1117)
return blackwood;
if(x == 1053 && y == 63 && z == 1117)
return blackwood;
if(x == 1049 && y == 64 && z == 1113)
return blackwood;
if(x == 1054 && y == 63 && z == 1112)
return blackwood;
if(x == 1058 && y == 63 && z == 1112)
return blackwood;
if(x == 1062 && y == 64 && z == 1117)
return blackwood;
if(x == 1050 && y == 64 && z == 1117)
return blackwood;
if(x == 1062 && y == 64 && z == 1118)
return glass;
if(x == 1050 && y == 64 && z == 1118)
return andesite;
(比这更长)
但是,当我调用执行这些指令的方法,我有一个滞后(不是很长,但足以在游戏中留下冻结印象)。
所以,我的问题是,我怎么能优化呢?
我在想在HashMap
和使用HashMap.get(key)
放养这些,但是,确实HashMap.get(key)
迭代列表中找到它呢?
号包含HashMap返回* *基本恒定的时间AFAIK。这就是人们使用它们的原因。注意,虽然要将坐标置于HashMap中,您需要将数字分组到某个向量或其他东西中,并且反复散列容器也可能会慢一些;尽管可能比你现在的t方法更快。 – Carcigenicate
'HashMap.get()'是恒定时间(加上冲突解决方案 - 取决于列表大小与列表中项目之间的比例) – Achilles
做你自己的研究什么是哈希表。下面是开始的一些事情:[哈希表如何工作](https:// stackoverflow。COM /问题/ 730620 /如何-做的那样 - 一个哈希表工作) –