Sobes.tech
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, და თუ მიმდინარე მასივი სავსეა, იქმნება ახალი მასივი უფრო დიდით, რაც უზრუნველყოფს დინამიკურ გაფართოებას.