我只是试图抓住你需要使用哈希的时候,以及何时使用数组可能更好.例如,在字符串的情况下,哈希表示什么样的现实世界对象?
我相信有时哈希被称为"字典",我认为这本身就是一个很好的例子.如果你想查找一个单词的定义,那么做一些像这样的事情是很好的:
definition['pernicious']
而不是试图找出定义将存储在的正确的数字索引.
这个答案假定通过"hash"你基本上只是指一个关联数组.
我认为你正在朝错误的方向看问题.决定是否应该使用哈希值的方式不是您访问它的方式.哈希的常见用法是使用查找表时.如果你的对象是字符串,并且你想检查它们是否存在于a中Dictionary
,那么通过O(1)查找它们(假设哈希工作正常).通过排序,时间将改为O(logn),这可能是不可接受的.
因此,散列非常适合与字典(散列图),集合(散列集)等一起使用.
它们也是表示对象而不存储对象本身(用于密码)的有用方式.