想象一下这样的情况:
我有一个HashMap<Integer, String>
,我在其中存储连接的客户端。这是HashMap
,因为顺序并不重要,我需要速度。它看起来像这样:
{
3: "John",
528: "Bob",
712: "Sue"
}
大多数客户端都断开连接,所以这就是为什么我有很大的差距。
如果我想添加一个新客户端,我需要一个密钥,显然需要使用_map.size()
获取密钥是不正确的。
因此,目前我使用此函数来获取最低的可用密钥:
private int lowestAvailableKey(HashMap<?, ?> _map) {
if (_map.isEmpty() == false) {
for (int i = 0; i <= _map.size(); i++) {
if (_map.containsKey(i) == false) {
return i;
}
}
}
return 0;
}
在某些情况下,这真的很慢。
有没有更快或更专业的方法来获得最低的免费密钥HashMap
?
任何理由使用HashMap
?如果你用过TreeMap http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html相反,地图将自动按键排序。是的,您最终会得到 O(log n) 访问而不是 O(1),但这是最明显的方法。
当然,您可以始终保持HashMap
and a TreeSet
,如果确实需要,请确保同时添加条目和删除条目。这TreeSet
只会充当地图的一组有序键。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)