Junior — Middle
Jaké kroky jsou prováděny při přidávání nového prvku do struktury ArrayList?
sobes.tech AI
Odpověď od AI
Při přidání nového prvku do ArrayList se provádí následující kroky:
- Zkontroluje se, zda je aktuální vnitřní pole (obvykle Object[]) dostatečně velké pro uložení nového prvku.
- Pokud není dostatek místa, vytvoří se nové pole s zvětšenou velikostí (obvykle o 50 % nebo 1,5krát větší), a všechny prvky se do něj zkopírují.
- Nový prvek se umístí na první volnou pozici v interním poli.
- Zvýší se čítač velikosti seznamu (size).
Obvykle se přidání prvku provádí takto:
public boolean add(E e) {
ensureCapacityInternal(size + 1); // kontrola a rozšíření pole
elementData[size++] = e; // přidání prvku a zvýšení velikosti
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); // zvětšení o 50%
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
elementData = Arrays.copyOf(elementData, newCapacity);
}