package ch03;
import java.util.Iterator;
//基于线性探测法的散列表
public class LinerProbingHashST<Key, Value> {
private int N;
private int M = 16;
private Key[] keys;
private Value[] values;
public LinerProbingHashST() {
this.keys = (Key[]) new Object[M];
this.values = (Value[]) new Object[M];
}
public LinerProbingHashST(int m) {
M = m;
this.keys = (Key[]) new Object[M];
this.values = (Value[]) new Object[M];
}
private int hash(Key key) {
return (key.hashCode() & 0xfffffff) % M;
}
/*
* 增加节点,分三种情况:
* 1.找到key相同的,就替换value(命中)
* 2.该位置的键和被查找的键不相同(继续查找)
* 3.插入的地方为空就直接插入(未命中)
* */
public void put(Key key, Value value) {
if (N >= M / 2) {
resize(2 * M
基于线性探测法的散列表 java
最新推荐文章于 2023-12-07 23:48:13 发布
本文详细探讨了如何使用Java实现线性探测法解决散列表冲突问题,包括其基本原理、步骤以及示例代码,帮助理解数据结构中散列表的高效存储和查找策略。
摘要由CSDN通过智能技术生成