Junior — Middle
Kā tiek īstenota dinamiskās paplašināšanas iespēja masīvā ArrayList un kāpēc tajā var ievietot jebkuru elementu skaitu?
sobes.tech AI
Atbilde no AI
ArrayList Java valodā ir realizēts, balstoties uz masīvu, kurš sākotnēji ir ar fiksētu izmēru. Kad elementu skaits pārsniedz iekšējā masīva pašreizējo izmēru, tas tiek paplašināts: tiek izveidots jauns ar lielāku izmēru un visi elementi tiek pārvietoti uz to.
Tas ļauj ievietot jebkādu elementu skaitu, jo ArrayList dinamiski palielina kapacitāti pēc nepieciešamības.
Vienkāršotas paplašināšanas loģikas piemērs:
private void ensureCapacity(int minCapacity) {
if (minCapacity > elementData.length) {
int newCapacity = elementData.length * 3 / 2 + 1;
if (newCapacity < minCapacity) {
newCapacity = minCapacity;
}
elementData = Arrays.copyOf(elementData, newCapacity);
}
}
Tādējādi, pievienojot elementus, tiek izsaukta ensureCapacity, un ja pašreizējais masīvs ir pilns, tiek izveidots jauns ar lielāku izmēru, kas nodrošina dinamisku paplašināšanos.