因此,我使用 Java 中的线性探测从头开始构建哈希表,方法如下:put(int key, String value)、get(int key)、remove(int key) 和 size()。所以我成功地实现了这些方法,但是我有一个理论问题。例如,我执行以下操作:
var map = new HashMap(5);
map.put(1, "a");
map.put(3, "b");
map.put(4, "c");
map.put(8, "d");
map.put(13, "e");
map.remove(8);
System.out.println(map);
System.out.println(map.get(13));
我的 put 方法工作正常,并根据线性探测算法放置键值对。现在我的输出是:
[空, 1=a, 13=e, 3=b, 4=c] 空
所以我的问题是,如果我的“get”方法理论上失败(因为线性探测)来获取键值对 13=e,因为删除方法在索引 0 处放置了一个空值。另外,如果我不使用删除,我已成功获得 13=e 对。