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);
}