An ArrayList
- это тип антикварной коллекции (начиная с временного периода до Generic v1.x).По сути, это массив, который действует как список.Если вы удаляете что-то из середины, это «оставляет» пробел в массиве, который, я полагаю, заполняет, перемещая каждый элемент в массиве вниз на одну ячейку.Как заметил @DavidG, никто больше не использует этот тип;вместо этого они используют List<T>
.
A LinkedList
, ну, в общем, связанный список.Первый узел в списке указывает на следующий узел (т. Е. Связан с ним), второй - на третий и т. Д.Если вы вставите узел ( c ) между двумя другими узлами ( a и b ), то узел a будет настроен так, чтобы указывать на c , и c будет установлен на b .Если вы удалите узел (скажем, узел y из списка, например x , y , z ), то x настроен так, чтобы он указывал на z , а y фактически исчезает (без ссылок на него можно собирать мусор).
Элементы в списках массивовлегко индексируются через индекс (в конце концов, это массивы под обложками).Если бы вы получили доступ к сотому элементу в связанном списке, вам нужно было бы начать с первого узла, следуя всем указателям на все остальные узлы, пока не дойдете до сотого.Если вы затем попросите 99-й, обход списка начнется заново.