Sobes.tech
Junior

Koja je razlika između HashMap i LinkedList?

sobes.tech АИ

Одговор од АИ

HashMap

  • Реализује асоцијативни низ (мапу "кључ-вредност").
  • Приступ, уметање и брисање елемената имају просечну сложеност O(1).
  • Поредак елемената није гарантован.
  • Користи хеширање за брзо претраживање.
// Пример коришћења HashMap
import 'dart:collection';

void main() {
  final HashMap<String, int> inventory = HashMap();
  inventory['јабуке'] = 5;
  inventory['банане'] = 10;
  print(inventory['јабуке']); // Исписује 5
}

LinkedList

  • Реализује повезани списак.
  • Приступ елементу по индексу има сложеност 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) (преко референце на чвор)
Поредак елемената Не гарантује се Зачува редослед додавања
Коришћење меморије Више због хеширања Мање, ако су чворови мали
Основна намена Брзо претраживање по кључу Ефективне операције на почетку/крају/у било ком делу (преко референце)