我目前正在创建一个石头剪刀布程序的原型,我需要以整数字符串格式存储选择。就搜索速度和内存使用量而言,什么是“最佳”集合?前提是计算机将选择一个随机数,然后搜索键-值对,以找到适当的选择名称,以便稍后在程序中使用。编辑:为了澄清,集合中最多有5个键-值对,键为Integers。
qxgroojn1#
如果您的键是Integer,则ArrayList或HashMap将是合适的。
Integer
ArrayList
HashMap
两者都是O(1),并且需要唯一键。
否则,如果它们是String,则只有HashMap适合。
String
oo7oh9g92#
HashMap将是最好的一个,get()具有O(1)的时间复杂度,O(1)意味着与元素数目无关,即常数。
get()
O(1)
kuarbcqp3#
如果您需要Map而不需要SortedMap,那么HashMap几乎总是正确的选择。注意,HashMap的一个构造函数有一个参数告诉它map的初始大小,构造函数将使用该参数为map分配合理的内存量,如果map的大小可能小于默认大小(16),这将非常有用。
Map
SortedMap
h9vpoimq4#
我认为这是使用enum和EnumMap的绝佳机会,EnumMap完全针对您正在考虑的情况进行了优化-即一组离散的可能按键。
enum
EnumMap
4条答案
按热度按时间qxgroojn1#
如果您的键是
Integer
,则ArrayList
或HashMap
将是合适的。两者都是O(1),并且需要唯一键。
否则,如果它们是
String
,则只有HashMap
适合。oo7oh9g92#
HashMap
将是最好的一个,get()
具有O(1)
的时间复杂度,O(1)意味着与元素数目无关,即常数。kuarbcqp3#
如果您需要
Map
而不需要SortedMap
,那么HashMap
几乎总是正确的选择。注意,
HashMap
的一个构造函数有一个参数告诉它map的初始大小,构造函数将使用该参数为map分配合理的内存量,如果map的大小可能小于默认大小(16),这将非常有用。h9vpoimq4#
我认为这是使用
enum
和EnumMap
的绝佳机会,EnumMap
完全针对您正在考虑的情况进行了优化-即一组离散的可能按键。