final NodeKV resize NodeKV oldTab = table; int oldCap = oldTab == null 0 oldTablength; int oldThr = threshold; int newCap newThr = 0; if oldCap 0
这段代码是用于调整哈希表的大小的方法。它将原来的哈希表数组oldTab复制给newTab,并根据需要调整新的数组的大小。如果原来的哈希表数组oldTab不为空,那么先判断是否需要扩容,如果需要扩容,则将新的容量newCap设置为原来容量的两倍,并将阈值newThr设置为原来阈值的两倍。如果不需要扩容,那么将新的容量newCap设置为原来的阈值,表示使用默认容量。如果原来的阈值为0,则表示使用默认的阈值和加载因子。接下来根据新的容量和加载因子计算新的阈值。然后将新的阈值赋值给threshold,创建一个新的哈希表数组newTab,并将其赋值给table。如果原来的哈希表数组oldTab不为空,则遍历原来的数组,将每个节点重新分配到新的数组中。如果节点的next为null,则直接将节点放入新的数组中对应的位置。如果节点是树节点,则调用split方法进行拆分。如果节点不是树节点,则根据节点的哈希值判断将节点放入新的数组的哪个位置。最后返回新的数组newTab。
原文地址: http://www.cveoy.top/t/topic/ib3n 著作权归作者所有。请勿转载和采集!