Ответ
В Dart основными структурами данных являются List (аналог ArrayList) и LinkedList из dart:collection, которые имеют принципиальные различия в реализации и производительности.
List (как ArrayList):
- Основан на динамическом массиве
- Быстрый доступ по индексу: O(1)
- Вставка/удаление в середине требует сдвига элементов: O(n)
- Оптимален для частого чтения и итерации
LinkedList:
- Основан на двусвязном списке элементов, наследующих
LinkedListEntry - Доступ по индексу медленный: O(n) — требует перебора
- Вставка/удаление при известной позиции: O(1)
- Оптимален для частых изменений структуры
Примеры использования:
// List (используется в 99% случаев)
void listExample() {
final list = [1, 2, 3, 4, 5];
// Быстрый доступ
print(list[2]); // 3 - O(1)
// Медленная вставка в середину
list.insert(2, 10); // O(n) - сдвигает элементы
// Быстрая итерация
for (var item in list) {
print(item);
}
}
// LinkedList (специальные случаи)
import 'dart:collection';
class Task extends LinkedListEntry<Task> {
final String name;
Task(this.name);
}
void linkedListExample() {
final taskList = LinkedList<Task>();
final task1 = Task('Design');
final task2 = Task('Develop');
final task3 = Task('Test');
taskList.add(task1);
taskList.add(task2);
// Быстрая вставка после task1
task1.insertAfter(task3); // O(1)
// Быстрое удаление
task2.unlink(); // O(1)
// Медленный поиск по значению
final found = taskList.firstWhere(
(task) => task.name == 'Test',
orElse: () => null,
);
}
Когда что использовать:
List: большинство случаев — хранение данных, отображение вListView, работа с JSONLinkedList: реализации LRU-кэша, undo/redo систем, когда нужны частые вставки/удаления в середине последовательности
Видео-ответы
▶
Собеседование Java разработчика, сильный Middle, Spring Framework, Hibernate
▶
Java разработчик проходит собеседование в бигтех на Middle позицию
▶
Java разработчик проходит собеседование в бигтех на Middle позицию
▶
обеседование в Oracle на Middle Java
▶
Тестовое интервью в Сбер на Middle Java с лайв-кодингом
▶
Тестовое интервью в Oracle на middle Java
▶
Открытое собеседование в МТС Диджитал на позицию Middle Java
▶
Техническое собеседование Java Developer | ТОП вопросов за 90 минут | от ООП до микросервисов
▶
Собеседование на Java-разработчика, вопросы для подготовки: finalize method, ArrayList, REST и SOAP
▶
Как пройти собеседование на Java разработчика: вопросы, ответы, разбор ошибок
▶
Техническое собеседование Java Developer | Топ вопросы Java | Подготовка к интервью
▶
Проверяем знания перед реальными собеседованиями | Техническое собеседование Java Kotlin | Jetbulb
▶
Собеседование Java Junior Middle | Между джуном и мидлом | Jetbulb
▶
Собеседование Java | Backend mock interview
▶
Моковое собеседование на Junior Android-разработчика
▶
Собеседование Java Junior | Никита В. vs. Максим Добрынин | Jetbulb
▶
| Мок интервью | Техническое собеседование на должность java-разработчик / РАЗБОР
▶
Тест Собес на Андроид Разработчика Java Kotlin Compose Android Devoloper interview Собеседование
▶
Java Собеседование | Backend-Mock интервью
▶
Собеседование Java Junior | Проверяем себя перед реальным собеседованием | Jetbulb
▶
Как пройти собеседование на Java разработчика
▶
Собеседование на Junior Android Dev у Анны Жарковой
▶
Собеседование Java Junior | Подготовка к реальному собеседованию | Jetbulb
▶
Mock-собеседование на позицию Java Junior | Джун справится?
▶
Собеседование Junior Android разработчика на ОФФЕР в РЕАЛЬНОМ времени / Мобильный разработчи
▶
Mock-Собеседование на позицию Java Junior Developer. Часть 1.
▶
Tech Interview Fest | Моковое cобеседование Android Junior |Solvery+Coffee&Code | Иван Попов, Яндекc
▶
Собеседование Java Junior | Jetbulb