哈希是根据字符串计算的,因此不会影响速度。从长远来看,空间影响(非常轻微的增加)将可以忽略不计。如果它使代码更清晰,那就去做并提高性能(只要我们不是在谈论巨大的性能瓶颈,没关系)。
速度
对于速度影响,请记住在 aHashMap<String, ?>
中,String
是被散列的内容。实际上,您可能会看到速度略有提高,因为与 3 次查找相比,您只需进行一次查找即可找到您的自定义对象。
空间
对于空间影响,请记住HashMap
使用大小为 2 次方的内部数组。如果您只HashMap
使用没有特殊设置(如自定义负载因子)的 vanilla,那么您可能会看到空间略有增加,因为现在您有(粗略,当然,这只是简化了):
HashSet<String>[]
Double[]
Double[]
组合起来之后,你将拥有
CustomObject[]
HashSet<String>
Double
Double
这是忽略不随地图增长的恒定大小信息。对象占用的空间不仅仅是对其字段的引用,但不是很多。
易读性
自定义对象选项赢得了这一点。它更干净而且非常面向对象编程,非常非常适合 Java。无论性能如何,您都应该这样做。从长远来看,它会看起来更好并且更易于维护。
例如,如果您想向自定义对象添加字段,这很容易。但是拥有单独的地图意味着为更多的变量创建更多的地图,这是肮脏的。我说走 OOP 方式。