Sobes.tech
Junior

Mi a különbség a HashMap és a LinkedList között?

sobes.tech MI

Válasz az MI-től

HashMap

  • Egy asszociatív tömböt ("kulcs-érték" térképet) valósít meg.
  • Az elemekhez való hozzáférés, beszúrás és törlés átlagosan O(1) komplexitású.
  • Az elemek sorrendje nem garantált.
  • Gyors kereséshez hash-elést használ.
// HashMap példa
import 'dart:collection';

void main() {
  final HashMap<String, int> leltar = HashMap();
  leltar['alma'] = 5;
  leltar['banán'] = 10;
  print(leltar['alma']); // 5-öt fog kiírni
}

LinkedList

  • Egy összekapcsolt listát valósít meg.
  • Egy elemhez való index szerinti hozzáférés O(n) komplexitású.
  • Az elemek beszúrása és törlése a lista elején vagy végén O(1) komplexitású.
  • Hatékony műveletek az elemek hozzáadására/törlésére bármely helyen a listában (ha van hivatkozás a csomópontra) O(1) komplexitással.
  • Támogatja az elemek beszúrását és törlését a csomópontokra való hivatkozások megtartásával (LinkedListEntry), garantálva az O(1)-et.
  • Az elemek sorrendje a hozzáadás sorrendjével egyezik.
// LinkedList példa
import 'dart:collection';

void main() {
  final LinkedList<String> vásárlásiLista = LinkedList();
  vásárlásiLista.addFirst(LinkedListEntry('Tej'));
  vásárlásiLista.add(LinkedListEntry('Kenyeret')); // Hozzáadja a végéhez
  print(vásárlásiLista.first); // Tej-t fog kiírni
  print(vásárlásiLista.where((entry) => entry.element == 'Kenyeret').first.element); // Példa hozzáférés, nem optimális
}

// LinkedListEntry példa
class LinkedListEntry<T> extends LinkedListEntry<LinkedListEntry> {
  final T data;
  LinkedListEntry(this.data);

  @override
  String toString() => data.toString();
}
Jellemző HashMap LinkedList
Adatszerkezet Asszociatív tömb Láncolt lista
Tárolás Kulcs-érték párok Csúcsok (elemek)
Hozzáférés index szerint Nem támogatott közvetlenül O(n)
Hozzáférés kulcs szerint O(1) (átlagosan) Nem támogatott
Beszúrás/Törlés O(1) (átlagosan) O(1) (kezdet/ vég), O(1) (csomópontra hivatkozva)
Elem sorrendje Nem garantált A hozzáadás sorrendje megmarad
Memóriahasználat Többet hash-elés miatt Kevesebb, ha a csomópontok kicsik
Fő felhasználás Gyors keresés kulcs szerint Hatékony műveletek kezdőn, végén vagy bárhol (hivatkozással)