Sobes.tech
Junior — Middle

ArrayList tuzilmasiga yangi element qo'shish uchun qanday bosqichlar bajariladi?

sobes.tech AI

AIdan javob

ArrayList ga yangi element qo'shishda quyidagi bosqichlar amalga oshiriladi:

  1. Hozirgi ichki massiv (odatda Object[]) yangi elementni saqlash uchun etarlicha katta yoki kichik emasligini tekshiriladi.
  2. Agar joy yetarli bo'lmasa, o'sishi 50% yoki 1.5 barobar katta bo'lgan yangi massiv yaratiladi va barcha elementlar unga ko'chiriladi.
  3. Yangi element ichki massivdagi birinchi bo'sh joyga joylashtiriladi.
  4. Ro'yxatning o'lchovchisi (size) oshiriladi.

Element qo'shish odatda quyidagicha amalga oshiriladi:

public boolean add(E e) {
    ensureCapacityInternal(size + 1);  // massivni tekshirish va kengaytirish
    elementData[size++] = e;            // elementni qo'shish va o'lchovni oshirish
    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% ga oshirish
    if (newCapacity - minCapacity < 0)
        newCapacity = minCapacity;
    elementData = Arrays.copyOf(elementData, newCapacity);
}