哈希数(Hash)是指将任意长度的消息压缩到某一固定长度的消息摘要的函数。哈希数常用于数据加密、数字签名等领域。
哈希表(Hash Table)是一种基于哈希函数实现的数据结构,它可以快速地进行插入、查找和删除操作。哈希表通常由一个数组和一个哈希函数组成,哈希函数将键映射到数组中的位置,然后在该位置存储对应的值。
HashMap是Java语言中提供的哈希表实现,它继承自AbstractMap类,实现了Map接口。HashMap使用哈希函数将键映射到数组中的位置,然后在该位置存储对应的值。HashMap支持null键和null值,并且允许多个键对应同一个值。
下面是从哈希数到哈希表再到HashMap的渐变过程:
1. 哈希数
```python
import hashlib
def hash_string(string):
return hashlib.sha256(string.encode()).hexdigest()
```
2. 哈希表
```python
class HashTable:
def __init__(self, size):
self.size = size
self.table = [[] for _ in range(size)]
def hash_function(self, key):
return key % self.size
def insert(self, key, value):
index = self.hash_function(key)
self.table[index].append((key, value))
def search(self, key):
index = self.hash_function(key)
for k, v in self.table[index]:
if k == key:
return v
raise KeyError(key)
def delete(self, key):
index = self.hash_function(key)
for i, (k, v) in enumerate(self.table[index]):
if k == key:
del self.table[index][i]
return
raise KeyError(key)
```
3. HashMap
```java
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap map