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:
- Hozirgi ichki massiv (odatda Object[]) yangi elementni saqlash uchun etarlicha katta yoki kichik emasligini tekshiriladi.
- Agar joy yetarli bo'lmasa, o'sishi 50% yoki 1.5 barobar katta bo'lgan yangi massiv yaratiladi va barcha elementlar unga ko'chiriladi.
- Yangi element ichki massivdagi birinchi bo'sh joyga joylashtiriladi.
- 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);
}