В соответствии с моим пониманием ArrayList
, емкость по умолчанию равна 10, а когда она превышает 10, она создаст новый объект с новой емкостью и т.д.
Итак, из любопытства я набрал следующую программу для проверки hashcode()
для объекта ArrayList
:
public class TestCoreJava {
public static void main(String [] args){
ArrayList al = new ArrayList();
for(int i=0;i<15;i++){
al.add("Temp"+i);
System.out.println("Hashcode for "+i+" element "+al.hashCode());
}
}
}
В соответствии с вышеприведенным сценарием, когда я не устанавливаю начальную емкость для ArrayList
, по умолчанию будет 10.
Поэтому, добавляя 11-й элемент, он создаст новый объект и увеличит емкость для ArrayList
.
Когда я печатаю хэш-код для объекта ArrayList
, он каждый раз дает новый hashcode()
.
Далее следует o/p:
Hashcode for 0 element 80692955
Hashcode for 1 element -1712792766
Hashcode for 2 element -1476275268
Hashcode for 3 element 1560799875
Hashcode for 4 element 1220848797
Hashcode for 5 element -727700028
Hashcode for 6 element -1003171458
Hashcode for 7 element -952851195
Hashcode for 8 element 607076959
Hashcode for 9 element 1720209478
Hashcode for 10 element -6600307
Hashcode for 11 element -1998096089
Hashcode for 12 element 690044110
Hashcode for 13 element -1876955640
Hashcode for 14 element 150430735
В соответствии с концепцией емкости по умолчанию, до 10-го элемента он должен был напечатать тот же hashcode()
, поскольку новый объект не должен быть создан до этой точки, но это не так.