Hash 什么';这是一个用散列表示的真实示例?

Hash 什么';这是一个用散列表示的真实示例?,hash,string,Hash,String,我只是想弄清楚什么时候需要使用散列,什么时候最好使用数组。当您需要将一个变量与另一个变量相关联时,例如,在字符串的情况下,散列将代表什么样的真实对象?。散列中的键/值没有“类型限制”。我认为有时散列被称为“字典”,我认为这本身就是一个很好的例子。如果您想查找单词的定义,只需执行以下操作即可: definition['pernicious'] 而不是试图找出将存储定义的正确数字索引 这个答案假设通过“散列”你基本上只是指一个关联数组。我认为你看问题的方向是错误的。决定是否应该使用散列的不是对象,

我只是想弄清楚什么时候需要使用散列,什么时候最好使用数组。当您需要将一个变量与另一个变量相关联时,例如,在字符串的情况下,散列将代表什么样的真实对象?

。散列中的键/值没有“类型限制”。

我认为有时散列被称为“字典”,我认为这本身就是一个很好的例子。如果您想查找单词的定义,只需执行以下操作即可:

definition['pernicious']
而不是试图找出将存储定义的正确数字索引


这个答案假设通过“散列”你基本上只是指一个关联数组。

我认为你看问题的方向是错误的。决定是否应该使用散列的不是对象,而是访问散列的方式。哈希的常见用法是在使用查找表时使用。如果您的对象是字符串,并且您希望检查它们是否存在于
字典中,则查找它们将(假设哈希正确工作)O(1)。对于排序,时间将改为O(logn),这可能是不可接受的

因此,哈希非常适合与字典(哈希映射)、集合()等一起使用


它们也是一种很有用的表示对象的方法,而无需存储对象本身(用于密码)。

任何时候,只要有1对1映射所提供的数据

例如,一个班级的成绩:

“约翰·史密斯”=>“B+”

“Jacob Jenkens”=>“C”


etc

电话簿-键=姓名,值=电话号码


我还想到旧世界的书籍百科全书(真实的书籍)。每一篇文章都被“散列”成一本书(cat收录在“C”卷中)。

散列有很多用途。除了加密用途外,它们通常用于快速查找信息。要使用数组获得类似的快速查找,需要对数组进行排序,然后使用二进制搜索。使用散列可以快速查找,而无需排序。这就是大多数脚本语言使用一个名称或另一个名称(字典等)实现哈希的原因。

一般来说,哈希用于快速查找内容-哈希映射可用于将一个内容与另一个快速内容关联,哈希集只会存储“快速”内容

请考虑哈希函数的复杂性和成本,在考虑是否更好地使用散列容器或正常的更少容器时,哈希值的附加大小和计算“完美”散列所需的时间,在散列函数发生冲突的情况下,在最后进行1:1比较所需的时间实际上可能比使用较少的运算符遍历具有对数复杂性的树结构所需的时间要高得多。

我经常使用一个运算符作为应用程序设置的“字典”

设定值

我将它们从数据库或配置文件加载到哈希表中,供我的应用程序使用


很好用,而且很简单。

一个例子可以是与地区、城市或任何邮政地址关联的邮政编码。

一个很好的例子是缓存,其中包含大量元素。您有一些标识符,希望通过这些标识符查找a值(例如URL,并且希望找到相应的缓存网页)。您希望这些查找尽可能快,并且不希望每次请求某个URL时都搜索所有存储的页面。对于这样的问题,哈希表是一个很好的数据结构。

我刚刚写的一个现实世界的例子是,当我在提交费用报告时,将人们在吃饭上的花费加起来。

我需要得到一个每天的总数,而不知道某一天会有多少项目,也不知道费用报告的日期范围会是什么是有许多变量(哪个城市、周末等)限制一个人可以消费多少

哈希表是处理这个问题的完美工具。关键是日期,该值为收据金额(转换为美元)。收据可以以任何顺序出现,我只是不断获取该日期的值,并将其相加,直到工作完成。显示也很简单。

(php代码)

现在的问题是:谁是经理? 答复:


这就是我要说的!实际上,散列的目的是为了更快地查找对象。如果该散列对象与另一个对象相关联,这很好(可能是最常见的情况)。但这不是必须的:考虑C++中的HasySub(),我认为这不是真实的例子。翻阅字典的人将使用插值搜索。物理词典没有O(1)查找单词的方法。他没有要求对散列进行真实世界的模拟,他要求提供一个你可以用一个表示的东西的示例。@Chad:是的,给了一个:一本词典。
$david        = new stdclass();
$david->name  = "david";
$david->age   = 12;
$david->id    = 1;
$david->title = "manager";

$joe        = new stdclass();
$joe->name  = "joe";
$joe->age   = 17;
$joe->id    = 2;
$joe->title = "employee";

// option 1: lets put users by index
$users[] = $david;
$users[] = $joe;

// option 2: lets put users by title
$users[$david->title] = $david;
$users[$joe->title]   = $joe;
$users["manager"]