← Назад к вопросам
Какой List лучше использовать при частом получении объектов по индексу?
1.2 Junior🔥 121 комментариев
#Коллекции
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Выбор List при частом получении по индексу
Для частого получения объектов по индексу лучше использовать ArrayList, так как он предоставляет O(1) доступ по индексу благодаря хранению элементов в массиве.
Сравнение List реализаций
ArrayList — лучший выбор для вашей задачи:
List<String> list = new ArrayList<>();
list.add("first");
list.add("second");
String element = list.get(0); // O(1) — очень быстро
Преимущества ArrayList:
- Доступ по индексу — O(1) константное время
- Хороший выбор для чтения данных
- Минимальные затраты памяти
LinkedList — избегайте:
LinkedList<String> list = new LinkedList<>();
list.add("first");
list.add("second");
String element = list.get(0); // O(n) — медленно при больших списках
Почему LinkedList медленнее:
- Доступ по индексу требует обхода цепочки узлов
- При индексе 1000 нужно пройти 1000 шагов
- LinkedList эффективен для вставки/удаления в начале
Практический пример
public class ListPerformanceExample {
public static void main(String[] args) {
List<Integer> arrayList = new ArrayList<>();
List<Integer> linkedList = new LinkedList<>();
// Заполнение
for (int i = 0; i < 10000; i++) {
arrayList.add(i);
linkedList.add(i);
}
// Доступ по индексу
long startArray = System.nanoTime();
for (int i = 0; i < 1000; i++) {
arrayList.get(i);
}
long timeArray = System.nanoTime() - startArray;
long startLinked = System.nanoTime();
for (int i = 0; i < 1000; i++) {
linkedList.get(i);
}
long timeLinked = System.nanoTime() - startLinked;
System.out.println("ArrayList: " + timeArray + " ns");
System.out.println("LinkedList: " + timeLinked + " ns");
// ArrayList заметно быстрее
}
}
Вывод
Для частого получения по индексу — всегда используйте ArrayList. Это стандартная рекомендация в Java, так как большинство операций с List подразумевают именно этот паттерн использования.