我目前正在创建一个石头剪刀布程序的原型,我需要以整数字符串格式存储选择。
就搜索速度和内存使用而言,使用哪个"最佳"集合?
前提是计算机将选择一个随机数,然后搜索键值对以找到适当的选择名称,以便稍后在程序中使用。
编辑:
澄清一下,集合中最多有 5 个键值对,整数作为键。
如果您的密钥Integer
,则ArrayList
或HashMap
两者都是 O(1( 并且需要唯一的键。
否则,如果它们是String
,HashMap
只适合。
HashMap
将是最好的。 get()
具有O(1)
时间复杂性。O(1(表示与元素数量无关,即常数。
如果你需要一个Map
而你不需要一个SortedMap
,HashMap
几乎总是正确的选择。
请注意,HashMap
的一个构造函数有一个参数,告诉它映射的初始大小。构造函数将使用它来为映射分配合理的内存量,如果映射的大小可能小于默认大小(即 16(,这将很有帮助。
我建议这是一个使用enum
s和EnumMap
的绝佳机会,该完全针对您正在考虑的场景进行了优化 - 即一组离散的可能键。