public class SeparateChainingHashST<Key, Value> {
/**
* 这是拉链法散列表,同时利用了第三章最开始使用的链表实现的符号表。
* 使用数组的索引来表示符号表的key,为了解决key过大而导致的数组过大问题,利用hash方法对key进行处理,而处理后的key有可能会出现索引相同的现象,为了解决冲突,数组的值用链表来表示。
*/
private int n; // 键值对的总数
private int m; // 散列表的大小
private SequentialSearchST<Key, Value>[] st; // 存放链表对象的数组
public SeparateChainingHashST() { //无参构造
this(997);
}
public SeparateChainingHashST(int m) { //有参构造
this.m = m; //创建M条链表
st = (SequentialSearchST<Key,Value>[])new SequentialSearchST[m];//java不支持泛型数组,故写成这个形式。
for (int i = 0; i < m; i++)
st[i] = new SequentialSearchST<Key, Value>();
}
private int hash(Key key) { //获得键的hash值
return
第三章--拉链法散列表
最新推荐文章于 2024-05-20 12:57:27 发布
本文详细探讨了拉链法在散列表中的应用,通过实例分析了如何使用Java实现拉链法来解决散列冲突,提升查找效率。
摘要由CSDN通过智能技术生成