如果我的地图需要小到快,我应该使用 Map<K,V> 的哪种实现?
我习惯在我的程序中使用,因为我知道它通常是最有效的(如果使用得当),并且可以轻松应对大型地图。我知道哪个对于枚举键非常有用,但通常我正在生成一个小映射,它永远不会变得非常大,可能很快就会被丢弃,并且没有并发问题。HashMap
EnumMap
对于这些小型,本地和临时用途来说是否太复杂?在这些情况下,我可以使用另一种简单的实现吗?HashMap<K,V>
我想我正在寻找一个类似于.它存在吗?Map
ArrayList
List
稍后在响应后添加:
这是一个场景,一个缓慢但非常简单的实现可能会更好 - 当我有很多很多这样的实现时。例如,假设我有一百万张左右的这些小地图,每张地图都有少量(通常少于三个)条目。我的参考率很低 - 也许在它们大部分时间被丢弃之前,我实际上并没有引用它们。对他们来说,情况仍然是最好的选择吗?Map
HashMap
资源利用率不仅仅是速度 - 例如,我想要一些不会使堆碎片化并使GC花费很长时间的东西。
这可能是正确的答案,但这不是过早优化的情况(或者至少可能不是)。HashMap
经过一番思考后添加:
我决定手动编写自己的.用 很容易做一个。我还添加了几个构造函数,以便可以从现有的.SmallMap
AbstractMap
SmallMap
Map
在此过程中,我必须决定如何表示s并实现该方法。Entry
SmallSet
entrySet
我通过编码(和单元测试)学到了很多东西,并希望分享这个,以防其他人想要一个。它在github上 这里.