Data structures 具有恒定时间复杂度的键值对get和put(长度为5的键字符串)

Data structures 具有恒定时间复杂度的键值对get和put(长度为5的键字符串),data-structures,hashmap,Data Structures,Hashmap,被要求使用Get和Put创建一个键/值对,该键/值对具有恒定的时间复杂度。键是长度为5的字符串,值是object 也没有哈希功能(HashMap、HashSet、HashTable或其他)它有冲突 有什么建议吗?如果不使用散列函数,那么常数时间就更难了。最简单的方法是,如果可以将键限制为一组足够小的整数值,只需使用直接索引的大数组即可。否则,与可能的键数相比,具有足够大N的N元树的对数行为本质上是恒定的。如果可能的键的实际数量相对较少,则可以使用树结构,并将搜索该树的几个步骤(形式上为对数)视为

被要求使用Get和Put创建一个键/值对,该键/值对具有恒定的时间复杂度。键是长度为5的字符串,值是object

也没有哈希功能(HashMap、HashSet、HashTable或其他)它有冲突


有什么建议吗?

如果不使用散列函数,那么常数时间就更难了。最简单的方法是,如果可以将键限制为一组足够小的整数值,只需使用直接索引的大数组即可。否则,与可能的键数相比,具有足够大N的N元树的对数行为本质上是恒定的。如果可能的键的实际数量相对较少,则可以使用树结构,并将搜索该树的几个步骤(形式上为对数)视为实际常数


如果

键是长度为5的字符串

表示长度为5的字节字符串,则密钥只有40位。但这大约是1000亿个值,在2016年的个人电脑上,这对于直接数组索引来说有点太多了


限制它的一种方法是要求每个字节都是十进制数字的ASCII码。然后只有10万个不同的键值,直接索引一个数组是可行的。

为什么要标记3种不同的语言?很好的一点,但是看起来直接索引一个数组是可行的。但是,数据集对于内存来说太大。也许可以保存到文件中。