应该使用TreeMap或HashMap包装命名参数?

时间:2011-03-06 09:23:20

标签: java performance

在大多数情况下,地图中只有0-5个参数。我猜TreeMap的占用空间可能较小,因为它比HashMap稀疏。但我不确定。

或者,在这种情况下编写我自己的Map可能更好吗?

4 个答案:

答案 0 :(得分:5)

主要区别在于TreeMapSortedMap,而HashMap则不是。如果您需要对地图进行排序,请使用TreeMap,否则请使用HashMap。性能特征和内存使用情况可能会有所不同,但如果您只有0-5个条目,则没有明显的差异。

我不建议您编写自己的地图,除非您需要标准地图中没有的功能,听起来您没有。

答案 1 :(得分:3)

  

我猜TreeMap可能会更小   足迹,因为它不那么稀疏   然后是HashMap。

这可能实际上是错误的,因为空HashMap个插槽是null因此占用的空间很小,TreeMap个条目的开销高于HashMap条目,因为儿童指针和颜色标志。

无论如何,如果你有成千上万的这样的地图,那只是一个问题。

答案 2 :(得分:0)

我猜您Map中的条目不需要订单,因此HashMap可以为您服务。

5个条目不是性能问题。

您需要编写Map,其中包含十几种已实施的方法,我认为这不是您所需要的。

答案 3 :(得分:0)

如果您的大约5个键总是相同(或者是一小组键的一部分),并且您通常通过字符串文字查询它们,并且您很少需要真正解析来自用户输入或类似的键,那么你可以考虑使用枚举类型作为EnumMap的键类型。这应该比HashMap更有效。不过,如果您有许多这样的地图,差异只会很重要。