ArrayList
Коротко: Самая распространённая реализация List в Java — внутри динамически растущий массив, автоматически меняющий размер по мере необходимости.
Подробнее: Доступ по индексу (get(i)) очень быстрый (постоянное время), а вставка/удаление в середине медленные, так как следующие элементы нужно сдвигать. В отличие от классического массива, размер не нужно задавать заранее.
List<String> names = new ArrayList<>();
names.add("Anna");
names.get(0);Подробности
Внутри ArrayList хранит обычный массив в качестве резервного.
См. также: List, LinkedList, массивы, Iterator, обобщения