HashMap 或 TreeMap for Map specifically sized 1

HashMap or TreeMap for Map specifically sized 1

我需要一件 Map 码的 1 号,然后开始想什么是最好的,TreeMap 还是 HashMap

我的想法是 TreeMap 会更好,因为初始化并向 HashMap 添加一个值将导致它创建一个包含 15 个条目的 table,而我相信 TreeMap是一个红黑树实现,在大小为1时只有一个根节点。

话虽如此,我想这分别取决于 hashCode / compareTo 作为 HashMap / TreeMap 的键。

最终,我认为就性能而言真的无关紧要,我正在考虑最佳实践。我想最好的性能来自自定义一个条目 Map 实现,但这有点荒谬。

执行此操作的规范方法是使用 Collections.singletonMap()

很好很简单,前提是您还需要(或至少不介意)不变性。

是的,它在内部实现为自定义单节点 Map


顺便说一句,如果在构造函数中指定 capacity 为 1 且 loadFactor 大于数字,则可以使用单个存储桶创建 HashMap你想要放入的元素的数量。但是在内存方面,这仍然会有点浪费,因为你会有 Entry 数组、Entry 对象和所有其他字段的开销 HashMap 具有(如加载因子、大小、调整大小阈值)。

如果你只是在寻找一个key to value structure你可以只使用SimpleEntry<K,V>class,这基本上是Map.Entry<K,V>

的一个实现