Kurz erklärt
Eine Liste, die intern auf einem Array basiert, das automatisch wächst (und typischerweise nie automatisch schrumpft), sobald mehr Platz gebraucht wird als aktuell verfügbar ist.
Genauer
Ist das interne Array voll, wird beim nächsten Einfügen automatisch ein größeres neues Array angelegt und der bisherige Inhalt hinüberkopiert — für den Nutzer der Liste unsichtbar. Dadurch bleibt der schnelle Indexzugriff eines Arrays erhalten, während die Größe nicht mehr im Voraus feststehen muss wie bei einem klassischen Array. Häufiges Einfügen in der Mitte der Liste bleibt dabei trotzdem langsamer als bei einer verketteten Liste.