哈希表中泛型的键与红黑树中泛型的键本质是不一样的。
由于实现的树是二分搜索树,所以要求键key必须具有可比较性。
而对于哈希表是不需要这种性质的。
对哈希表中键key必须有一个要求:必须实现hashCode方法。
在Java中所有的类型的父类都是Object。而Object类中默认就有hashCode方法。所以所有类型默认都有实现hashCode的方法。
利用TreeMap(底层为红黑树)来实现哈希表:
import java.util.TreeMap;
public class HashTable<K, V> {
//利用TreeMap封装成一个数组
//数组:每个元素存放着键和值
private TreeMap<K, V>[] hashtable;
//哈希表中的元素个数
private int size;
//哈希表的长度
private int M;
public HashTable(int M){
this.M = M;
size = 0;
//开辟数组空间
hashtable = new TreeMap[M];
//对每一个TreeMap进行实例化
for(int i = 0 ; i < M ; i ++){
hashtable[i] = new TreeMap<>();
}
}
public Hash