public Hashtable(int initialCapacity, float loadFactor) { if (initialCapacity < 0) throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); if (loadFactor <= 0 || Float.isNaN(loadFactor)) throw new IllegalArgumentException("Illegal Load: "+loadFactor); if (initialCapacity==0) initialCapacity = 1; this.loadFactor = loadFactor; table = new Entry<?,?>[initialCapacity]; threshold = (int)Math.min(initialCapacity * loadFactor, MAX_ARRAY_SIZE + 1); } 解释一下这每一行代码是在干什么
时间: 2024-02-14 21:20:43 浏览: 87
08:Hashtable的操作.pdf
这段代码是 Java 中 Hashtable 类的构造函数。它接受两个参数:initialCapacity 和 loadFactor。下面是每一行代码的作用:
1. 如果传入的 initialCapacity 小于 0,就抛出 IllegalArgumentException 异常,提示传入的初始容量非法。
2. 如果传入的 loadFactor 小于等于 0,或者为 NaN,就抛出 IllegalArgumentException 异常,提示传入的加载因子非法。
3. 如果 initialCapacity 等于 0,就将其设置为 1。
4. 将 loadFactor 赋值给对象的 loadFactor 属性。
5. 创建一个长度为 initialCapacity 的数组 table,用于存储 Hashtable 中的元素。
6. 计算并设置阈值 threshold。阈值是 Hashtable 中元素数量的上限,当元素数量达到阈值时,Hashtable 会自动扩容。threshold 的值取决于 initialCapacity 和 loadFactor,但最大值不能超过 MAX_ARRAY_SIZE + 1。
阅读全文