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>
的一个实现
我需要一件 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>