Sobes.tech
Junior — Middle

Milyen lépésekkel történik egy új elem hozzáadása az ArrayList szerkezethez?

sobes.tech MI

Válasz az MI-től

Amikor egy új elemet adunk hozzá az ArrayList-hez, a következő lépések történnek:

  1. Ellenőrizzük, hogy a jelenlegi belső tömb (általában Object[]) elég nagy-e az új elem tárolásához.
  2. Ha nincs elég hely, akkor egy megnövelt méretű (általában 50% vagy 1,5-szeres nagyobb) új tömb jön létre, és minden elem átkerül oda.
  3. Az új elem a belső tömb első szabad pozíciójára kerül.
  4. A lista méretét növeljük (size).

Így általában így történik egy elem hozzáadása:

public boolean add(E e) {
    ensureCapacityInternal(size + 1);  // ellenőrzés és a tömb bővítése
    elementData[size++] = e;            // elem hozzáadása és a méret növelése
    return true;
}

private void ensureCapacityInternal(int minCapacity) {
    if (minCapacity - elementData.length > 0)
        grow(minCapacity);
}

private void grow(int minCapacity) {
    int oldCapacity = elementData.length;
    int newCapacity = oldCapacity + (oldCapacity >> 1); // 50%-os növekedés
    if (newCapacity - minCapacity < 0)
        newCapacity = minCapacity;
    elementData = Arrays.copyOf(elementData, newCapacity);
}