В соответствии с моим пониманием 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(), поскольку новый объект не должен быть создан до этой точки, но это не так.
