Junior — Middle
როგორ არის განხორციელებული დინამიური მასივის გაფართოების შესაძლებლობა ArrayList-ში და რატომ შეიძლება მასში განთავსდეს ნებისმიერი რაოდენობის ელემენტები?
sobes.tech AI
პასუხი AI-სგან
Java- ში ArrayList რეალიზებულია ბაზაზე მასივის, რომელიც თავდაპირველად აქვს ფიქსირებული ზომა. როდესაც ელემენტების რაოდენობა გადის მიმდინარე ზომას, მასივი ფართოვდება: ქმნიან ახალ მასივს უფრო დიდ ზომით და ყველა ელემენტი იწერება მასში.
ეს საშუალებას აძლევს ჩააგდოს ნებისმიერი რაოდენობის ელემენტები, რადგან ArrayList დინამიურად ზრდის მოცულობას საჭიროების მიხედვით.
სადავო გამარტივებული ლოგიკის მაგალითი:
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);
}
}
ასე, როდესაც ელემენტები ემატება, იძახება ensureCapacity, და თუ მიმდინარე მასივი სავსეა, იქმნება ახალი მასივი უფრო დიდით, რაც უზრუნველყოფს დინამიკურ გაფართოებას.