Sobes.tech
Junior — Middle

ArrayList strukturuna yeni element əlavə etmək üçün hansı addımlar atılır?

sobes.tech Süni İntellekt

AI-dan cavab

ArrayList-ə yeni element əlavə edilərkən aşağıdakı addımlar həyata keçirilir:

  1. Cari daxili massiv (adətən Object[]) yeni elementi saxlamaq üçün kifayət qədər böyükdürmü yoxlanılır.
  2. Əgər yer kifayət deyilsə, artırılmış ölçüdə (adətən 50% və ya 1.5 dəfə daha böyük) yeni massiv yaradılır və bütün elementlər ona köçürülür.
  3. Yeni element daxili massivdə ilk boş yerə yerləşdirilir.
  4. Siyahının ölçü sayacı (size) artırılır.

Əksər hallarda element əlavə etmək aşağıdakı kimi olur:

public boolean add(E e) {
    ensureCapacityInternal(size + 1);  // massiv yoxlanılır və genişləndirilir
    elementData[size++] = e;            // element əlavə edilir və ölçü artırılır
    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% artırma
    if (newCapacity - minCapacity < 0)
        newCapacity = minCapacity;
    elementData = Arrays.copyOf(elementData, newCapacity);
}