Sobes.tech
Junior — Middle

Ποια βήματα ακολουθούνται για την προσθήκη ενός νέου στοιχείου στη δομή ArrayList;

sobes.tech AI

Απάντηση από AI

Κατά την προσθήκη ενός νέου στοιχείου σε ArrayList, εκτελούνται τα ακόλουθα βήματα:

  1. Ελέγχεται αν ο τρέχων εσωτερικός πίνακας (συνήθως Object[]) είναι αρκετά μεγάλος για να αποθηκεύσει το νέο στοιχείο.
  2. Αν δεν υπάρχει αρκετός χώρος, δημιουργείται ένας νέος πίνακας με αυξημένο μέγεθος (συνήθως κατά 50% ή 1,5 φορές μεγαλύτερος), και όλα τα στοιχεία αντιγράφονται σε αυτόν.
  3. Το νέο στοιχείο τοποθετείται στη πρώτη ελεύθερη θέση του εσωτερικού πίνακα.
  4. Ο μετρητής μεγέθους της λίστας (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);
}