Junior — Middle
Millised sammud tehakse uue elemendi lisamiseks ArrayList struktuuri?
sobes.tech AI
Vastus AI-lt
Kui ArrayList-i lisatakse uus element, tehakse järgmised sammud:
- Kontrollitakse, kas praegune sisemine massiiv (tavaliselt Object[]) on piisavalt suur uue elemendi salvestamiseks.
- Kui ruumi ei ole piisavalt, luuakse uus massiiv suurendatud suurusega (tavaliselt 50% või 1,5 korda suurem), ja kõik elemendid kopeeritakse sinna.
- Uus element asetatakse sisemise massiivi esimesele vabadale positsioonile.
- Suuruse loendur (size) suurendatakse.
Tavaliselt lisatakse element järgmiselt:
public boolean add(E e) {
ensureCapacityInternal(size + 1); // kontroll ja massiivi laiendamine
elementData[size++] = e; // element lisamine ja suuruse suurendamine
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% suurendamine
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
elementData = Arrays.copyOf(elementData, newCapacity);
}