用于Map的HashMap或TreeMap具体大小为1

时间:2015-06-16 10:42:00

标签: java hashmap treemap

我需要一个Map大小为1,并开始想知道什么是最好的,TreeMapHashMap

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

话虽如此,我认为它分别取决于hashCode / compareTo HashMap / TreeMap的密钥。

最终,我认为它在性能方面并不重要,我在最佳实践方面进行思考。我想最佳性能将来自自定义的一个Map实现,但这有点荒谬。

2 个答案:

答案 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>的实现