Junior — Middle
Milyen lépésekkel történik egy új elem hozzáadása az ArrayList szerkezethez?
sobes.tech MI
Válasz az MI-től
Amikor egy új elemet adunk hozzá az ArrayList-hez, a következő lépések történnek:
- Ellenőrizzük, hogy a jelenlegi belső tömb (általában Object[]) elég nagy-e az új elem tárolásához.
- Ha nincs elég hely, akkor egy megnövelt méretű (általában 50% vagy 1,5-szeres nagyobb) új tömb jön létre, és minden elem átkerül oda.
- Az új elem a belső tömb első szabad pozíciójára kerül.
- A lista méretét növeljük (size).
Így általában így történik egy elem hozzáadása:
public boolean add(E e) {
ensureCapacityInternal(size + 1); // ellenőrzés és a tömb bővítése
elementData[size++] = e; // elem hozzáadása és a méret növelése
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%-os növekedés
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
elementData = Arrays.copyOf(elementData, newCapacity);
}