Sobes.tech
Junior — Middle

Чӣ тавр имконпазирии васеъкунии динамикии массив дар ArrayList амалӣ карда шудааст ва чаро ба он метавон миқдори номаҳдуди элементҳоро ворид кард?

sobes.tech AI

Ҷавоб аз AI

ArrayList дар Java дар асоси массиви иҷро мешавад, ки ибтидоан андозаи муайян дорад. Вақте ки шумораи унсурҳо аз андозаи ҳозираи массиви дохилӣ зиёд мешавад, он васеъ карда мешавад: массиви нав бо андозаи калонтар сохта мешавад ва ҳамаи унсурҳо ба он нусхабардорӣ мешаванд.

Ин имкон медиҳад, ки шумораи номаҳдуди унсурҳоро ворид кардан мумкин аст, зеро ArrayList қобилияти васеъшавии динамикро дар асоси эҳтиёҷот дорад.

Маслиҳати соддакардашудаи логикаи васеъшавӣ:

private void ensureCapacity(int minCapacity) {
    if (minCapacity > elementData.length) {
        int newCapacity = elementData.length * 3 / 2 + 1;
        if (newCapacity < minCapacity) {
            newCapacity = minCapacity;
        }
        elementData = Arrays.copyOf(elementData, newCapacity);
    }
}

Баъд аз илова кардани унсурҳо, функсияи ensureCapacity даъват мешавад, ва агар массиви ҳозира пур бошад, массиви нав бо андозаи калонтар сохта мешавад, ки ин васеъшавии динамикро таъмин мекунад.