1 背景
2 哈希查找
哈希查找是Dictionary和HashTable的基础。建议首先看下哈希查找的工作原理。哈希查找算法分为两部分:1.数据存储算法;2.数据读取算法。这里以.NET的实现为例简要分析下算法流程。
2.1 数据存储算法
Figure 1: 数据存储算法
从图中可以看出,只有在发生冲突的时候Object.Equals方法才会被调用。
2.2 数据读取算法
Figure 2: 数据读取算法
从图中可以看出,在读取数据时,无论发生冲突与否Object.Equals方法都会被调用。
另外,MSDN中有提到,当两个对象相同时其Hash值肯定相同,而两个对象的Hash值相同时两个对象未必相同。所以,为了保证数据存取的正确性,如果需要重载,这两个方法最好一起重载。