五分钟了解Hash算法

时间:2024-04-02 18:36:40

Hash算法详解

想象一下如果高级语言(Java,C++ ,C#)中如果没有实现类似List、Map等数据结构,企业级应用开发将是多么痛苦的事吧?

  Key—Value这种数据结构对于数据处理非常方便。在Java中是Map,在C#中是Dictionary。那么我们常用的HashMap是如何实现的呢?

  存储数据有两种策略,数组和链表。 数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。那么我们能不能综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构?

  答案是肯定的,这种数据结构就是哈希表。

  Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

 HashMap<String,Int> hash = new HashMap<String, Int>();
 hash.add("test1",1);