Конструктор HashMap
/**
* Constructs an empty <tt>HashMap</tt> with the specified initial
* capacity and load factor.
*
* @param initialCapacity the initial capacity
* @param loadFactor the load factor
* @throws IllegalArgumentException if the initial capacity is negative
* or the load factor is nonpositive
*/
public HashMap(int initialCapacity, float loadFactor) {
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal initial capacity: " +
initialCapacity);
if (initialCapacity > MAXIMUM_CAPACITY)
initialCapacity = MAXIMUM_CAPACITY;
if (loadFactor <= 0 || Float.isNaN(loadFactor))
throw new IllegalArgumentException("Illegal load factor: " +
loadFactor);
this.loadFactor = loadFactor;
this.threshold = tableSizeFor(initialCapacity); // here, threadshold is actually initial capacity
}
Я немного запутался при чтении кода.Мой вопрос заключается в том, почему использовать поле threshold
для хранения начальной емкости вместо дополнительного поля, такого как initialCapacity
, что более понятно?
Редактировать: я не заметил, что конструктор принимает параметр initialCapacity
, Я думаю, что параметр конструктора initialCapacity
должен быть specifiedInitialCapacity
.