Java 特定大小为1的映射的HashMap或TreeMap

Java 特定大小为1的映射的HashMap或TreeMap,java,hashmap,treemap,Java,Hashmap,Treemap,我需要一个大小为1的MapTreeMap或HashMap,我开始想知道什么才是最好的 我的想法是TreeMap会更好,因为初始化HashMap并向其添加一个值将导致它创建一个包含15个条目的表,而我认为TreeMap是一个红黑树实现,大小为1的树只会有一个根节点 话虽如此,我想它分别取决于HashMap/树映射的键的hashCode/比较 最后,我认为这实际上与性能无关,我是在考虑最佳实践。我想最好的性能应该来自一个自定义的一项Map实现,但这有点荒谬。实现这一点的标准方法是使用 如果您还需要(

我需要一个大小为1的
Map
TreeMap或
HashMap
,我开始想知道什么才是最好的

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

话虽如此,我想它分别取决于
HashMap
/
树映射的键的
hashCode
/
比较


最后,我认为这实际上与性能无关,我是在考虑最佳实践。我想最好的性能应该来自一个自定义的一项
Map
实现,但这有点荒谬。

实现这一点的标准方法是使用

如果您还需要(或者至少不介意)不可变性,那么就非常简单

是的,它在内部实现为一个定制的单节点
Map



另一方面,如果在构造函数中指定
容量
为1,并且
加载因子
大于要放入的元素数,则可以使用单个bucket创建
HashMap
。但是在内存方面,这仍然是一种浪费,因为您会有
条目
数组、
条目
对象和所有其他
HashMap
字段的开销(如加载因子、大小、调整树的大小)。

如果您只是在寻找一个
键到值结构
您可以使用类,这基本上是
Map.Entry的一个实现

如果您只计划在Map中存储一个条目,那么为什么要使用Map呢?只需保留对单个值的引用。我需要将其插入第三方API。
Collections.singletonMap()
学习新东西总是很好的。从没听说过+1这是一个我不知道的有用的方法。这不是这个特定实现所需要的,但它肯定是工具箱所需要的。谢谢你。