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).