Все залежить від того, який тип операції ви виконуєте під час ітерації, всі структури даних торгуються між часом і пам’яттю, і залежно від наших потреб ми повинні вибрати правильний DS. Тому є деякі випадки, коли LinkedList швидше, ніж масив, і навпаки. Розглянемо три основні операції над структурами даних.
Оскільки масив є структурою даних, заснованою на індексі, пошук array.get (index) займе O (1) час, поки пов'язаний список не є індексом DS, тому вам потрібно буде пройти до індексу, де index <= n, n - розмір пов'язаного списку, тому масив швидше пов'язаний список, коли у них є випадковий доступ до елементів.
Q. Отже, яка краса за цим?
Оскільки масиви є суміжними блоками пам’яті, великі шматки з них будуть завантажені в кеш при першому доступі, це робить порівняно швидким доступ до решти елементів масиву, наскільки ми отримуємо доступ до елементів масиву посилання, що збільшується, також збільшується, таким чином зменшується улов Пропускає, Кеш-локальність посилається на операції, що знаходяться в кеші, і, таким чином, виконується набагато швидше порівняно з пам'яттю, в основному У масиві ми максимізуємо шанси на отримання послідовного доступу до елементів кешу. Хоча пов'язані списки не обов'язково знаходяться в суміжних блоках пам'яті, немає гарантії, що елементи, що з'являються послідовно у списку, насправді розташовуються поруч один з одним у пам'яті, це означає меншу кількість показів кешу, наприклад
Це в LinkedList легко і швидко, оскільки вставка - це операція O (1) в LinkedList (на Java) порівняно з масивом. Враховуйте випадок, коли масив заповнений, нам потрібно скопіювати вміст у новий масив, якщо масив буде заповнений, що робить вставку елемент у ArrayList з O (n) в гіршому випадку, тоді як ArrayList також повинен оновити свій індекс, якщо ви вставите щось де завгодно, крім кінця масиву, у випадку пов'язаного списку нам не потрібно змінювати його розмір, вам просто потрібно оновити покажчики.
Він працює як вставки та краще в LinkedList, ніж масив.