Sobes.tech
Junior — Middle

Kuidas on realiseeritud ArrayListis dünaamilise laiendamise võimalus ja miks saab sinna sisestada mistahes arvu elemente?

sobes.tech AI

Vastus AI-lt

ArrayList Java-s on rakendatud massiivi põhjal, mille algsuurus on fikseeritud. Kui elementide arv ületab sisemise massiivi praeguse suuruse, toimub selle laiendamine: luuakse uus suurem massiiv ja kõik elemendid kopeeritakse sinna.

See võimaldab sisestada mis tahes arvu elemente, kuna ArrayList suurendab dünaamiliselt mahtu vastavalt vajadusele.

Lihtsustatud laiendamise loogika näide:

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);
    }
}

Seega, elementide lisamisel kutsutakse välja ensureCapacity, ja kui praegune massiiv on täis, luuakse uus suurem massiiv, mis tagab dünaamilise laiendamise.