Junior — Middle
ArrayList түзүмүнө жаңы элемент кошуу үчүн кандай кадамдар аткарылат?
sobes.tech AI
AIден жооп
ArrayList-ке жаңы элемент кошуу үчүн төмөнкү кадамдар аткарылат:
- Ички массив (адатта Object[]) азыркы учурда жаңы элементти сактай алабы деп текшерилет.
- Эгер орун жетишсиз болсо, көбөйтүлгөн өлчөмдө (адатта 50% же 1.5 эсе чоң) жаңы массив түзүлүп, бардык элементтер ага көчүрүлөт.
- Жаңы элемент ички массивдин биринчи бош ордуна коюлат.
- Тизмедеги өлчөм санагыч (size) көбөйтүлөт.
Элемент кошуу көбүнчө мындай жүргүзүлөт:
public boolean add(E e) {
ensureCapacityInternal(size + 1); // массивди текшерүү жана кеңейтүү
elementData[size++] = e; // элементти кошуу жана өлчөмдү көбөйтүү
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% көбөйтүү
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
elementData = Arrays.copyOf(elementData, newCapacity);
}