Junior
Koja je razlika između HashMap i LinkedList?
sobes.tech АИ
Одговор од АИ
- Реализује асоцијативни низ (мапу "кључ-вредност").
- Приступ, уметање и брисање елемената имају просечну сложеност O(1).
- Поредак елемената није гарантован.
- Користи хеширање за брзо претраживање.
// Пример коришћења HashMap
import 'dart:collection';
void main() {
final HashMap<String, int> inventory = HashMap();
inventory['јабуке'] = 5;
inventory['банане'] = 10;
print(inventory['јабуке']); // Исписује 5
}
- Реализује повезани списак.
- Приступ елементу по индексу има сложеност O(n).
- Уметање и брисање елемената на почетку или крају списка имају сложеност O(1).
- Ефективан је за операције додавања/брисања елемената у било ком делу списка (са односом на чвор) са сложеношћу O(1).
- Подржава уметање и брисање елемената са очувањем референци на чворове (
LinkedListEntry), обезбеђујући O(1). - Поредак елемената одговара редоследу додавања.
// Пример коришћења LinkedList
import 'dart:collection';
void main() {
final LinkedList<String> shoppingList = LinkedList();
shoppingList.addFirst(LinkedListEntry('Млеко'));
shoppingList.add(LinkedListEntry('Леб')); // Додаје на крај
print(shoppingList.first); // Исписује Млеко
print(shoppingList.where((entry) => entry.element == 'Леб').first.element); // Пример приступа, није оптималан
}
// Пример коришћења LinkedListEntry
class LinkedListEntry<T> extends LinkedListEntry<LinkedListEntry> {
final T data;
LinkedListEntry(this.data);
@override
String toString() => data.toString();
}
| Карактеристика | HashMap | LinkedList |
|---|---|---|
| Структура података | Асоцијативни низ | Повезани списак |
| Чување | Кључ-вредност (пари) | Елементи (чворови) |
| Приступ по индексу | Не подржава се директно | O(n) |
| Приступ по кључу | O(1) (у просеку) | Не подржава се |
| Уметање/Брисање | O(1) (у просеку) | O(1) (на почетку/крају), O(1) (преко референце на чвор) |
| Поредак елемената | Не гарантује се | Зачува редослед додавања |
| Коришћење меморије | Више због хеширања | Мање, ако су чворови мали |
| Основна намена | Брзо претраживање по кључу | Ефективне операције на почетку/крају/у било ком делу (преко референце) |