Sobes.tech
Junior — Middle

Hogyan viselkedik a belső tömb az ArrayList-ben, amikor növelni kell a méretét?

sobes.tech MI

Válasz az MI-től

A Java-ban az ArrayList belső tömbje, amikor a méret növelése szükséges, egy nagyobb méretű új tömböt hoz létre, általában körülbelül az aktuális méret 1,5-szerese. Ezután minden elem átkerül a régi tömbből az újba, majd a belső tömb hivatkozása frissül. Ez lehetővé teszi az ArrayList számára, hogy dinamikusan bővüljön új elemek hozzáadásakor, de a méret növelése időigényes művelet a másolás miatt.

Így körülbelül történik a méret növelése:

ArrayList<Integer> list = new ArrayList<>();
// Elem hozzáadásakor, ha a belső tömb tele van,
// létrejön egy új, nagyobb kapacitású tömb, és az adatok másolódnak.
list.add(1);
list.add(2);
// ...

Ez a viselkedés rejtve marad a felhasználó elől, de fontos figyelembe venni nagy adatmennyiség esetén, hogy minimalizáljuk a bővítések számát (például kezdeti kapacitás megadásával).