Все зависит от того, какой тип операции вы выполняете во время итерации, все структуры данных имеют компромисс между временем и памятью, и в зависимости от наших потребностей мы должны выбрать правильный DS. Так что в некоторых случаях LinkedList быстрее, чем массив, и наоборот. Рассмотрим три основные операции над структурами данных.
Поскольку массив - это структура данных на основе индекса, поиск в array.get (index) займет O (1) времени, в то время как связанный список не является индексом DS, поэтому вам нужно перейти к индексу, где index <= n, n - это размер связанный список, так что массив быстрее связанного списка, когда есть произвольный доступ к элементам. </p>
Q. Так в чем же красота?
Поскольку массивы являются смежными блоками памяти, их большие куски будут загружаться в кэш при первом доступе, что делает его сравнительно быстрым для доступа к остальным элементам массива, поскольку доступ к элементам массива также увеличивает локальность ссылок. таким образом, меньше промахов - локальность кэша относится к операциям, находящимся в кэше, и, следовательно, выполняется намного быстрее, чем в памяти, в основном в массиве мы максимально увеличиваем вероятность последовательного доступа к элементам в кэше. Хотя связанные списки не обязательно находятся в смежных блоках памяти, нет гарантии, что элементы, которые последовательно появляются в списке, фактически располагаются рядом друг с другом в памяти, это означает, что меньше обращений в кэш, например, больше кеша пропускается, потому что нам нужно читать из памяти при каждом доступе к элементу связанного списка, что увеличивает время, необходимое для доступа к ним, и снижает производительность, поэтому, если мы делаем больше операций произвольного доступа, таких как поиск, массив будет быстрым, как объяснено ниже.
Это легко и быстро в LinkedList, так как вставка является операцией O (1) в LinkedList (в Java) по сравнению с массивом, рассмотрим случай, когда массив заполнен, нам нужно скопировать содержимое в новый массив, если массив заполнится, который делает вставку элемента в ArrayList из O (n) в худшем случае, в то время как ArrayList также необходимо обновить его индекс, если вы вставляете что-либо где-нибудь, кроме конца массива, в случае связанного списка нам не нужно изменять его размер, вы просто нужно обновить указатели.
Он работает как вставки и лучше в LinkedList, чем в массиве.