Встречается на собеседованиях • сегодня
ArrayList или LinkedList быстрее переберет 100 млн элементов
Для перебора 100 млн элементов `ArrayList` будет быстрее `LinkedList` из-за особенностей реализации:
1. **ArrayList**:
- Хранит элементы в непрерывном блоке памяти
- Итерация происходит за O(n) с высокой локальностью данных (кеш-дружелюбно)
- Доступ по индексу за O(1)
2. **LinkedList**:
- Элементы разбросаны в памяти (узлы с ссылками)
- Итерация также O(n), но с постоянными промахами кеша
- Каждый переход к следующему элементу требует разыменования указателя
Пример измерения времени:
```java
List arrayList = new ArrayList<>();
List linkedList = new LinkedList<>();
// Заполнение обеих коллекций 100_000_000 элементов
long start = System.nanoTime();
for (int i : arrayList) { /* итерация */ }
long arrayTime = System.nanoTime() - start;
start = System.nanoTime();
for (int i : linkedList) { /* итерация */ }
long linkedTime = System.nanoTime() - start;
// arrayTime будет значительно меньше linkedTime
```

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы