我需要一个Map
大小为1,并开始想知道什么是最好的,TreeMap
或HashMap
?
我的想法是TreeMap
会更好,因为初始化并向HashMap
添加值会导致它创建一个包含15个条目的表,而我相信TreeMap
是一个红黑树实现,大小为1只有一个根节点。
话虽如此,我认为它分别取决于hashCode
/ compareTo
HashMap
/ TreeMap
的密钥。
最终,我认为它在性能方面并不重要,我在最佳实践方面进行思考。我想最佳性能将来自自定义的一个Map
实现,但这有点荒谬。
答案 0 :(得分:7)
这样做的规范方法是使用Collections.singletonMap()
简单明了,前提是您还要求(或至少不要介意)不变性。
是的,在内部它实现为自定义单节点Map
。
完全不同,如果在构造函数中指定了HashMap
为1且capacity
大于元素数,则可以使用单个存储桶创建loadFactor
你想要放入。但是在内存方面仍然有点浪费,因为你有Entry
数组,Entry
对象和所有其他字段的开销{ {1}}具有(如加载因子,大小,调整大小阈值)。
答案 1 :(得分:1)
如果您只是在寻找key to value structure
,那么您可以使用SimpleEntry<K,V>
课程,这基本上是Map.Entry<K,V>
的实现