Но когда я вижу исходный код, новый узел добавляется в хвост.Это правильно?
Добавляется в голову, в более старых версиях.Однако в Java 8 было сделано много изменений.
class A {
static class SameHash {
final int n;
SameHash(int n) {
this.n = n;
}
@Override
public int hashCode() {
return 1;
}
@Override
public String toString() {
return "SameHash{" +
"n=" + n +
'}';
}
}
public static void main(String[] args) {
HashSet<SameHash> set = new HashSet<>();
for (int i = 1; i <= 4; i++)
set.add(new SameHash(i));
System.out.println(set);
}
}
печатает
[SameHash{n=1}, SameHash{n=2}, SameHash{n=3}, SameHash{n=4}]
ПРИМЕЧАНИЕ. Ключи могут иметь разные хэш-коды, но могут оказаться в одном и том же сегменте.
Я не полностью понял эту переменную MIN_TREEIFY_CAPACITY.Похоже ли это после такого большого количества, вся карта будет преобразована в дерево (из массива в дерево)?
После этого подсчета ведро преобразуется в дерево, если ключ равен Comparable