Queue vs List vs Array vs Map?

2 Antworten

Ne queue ist gut wenn dir die reihenfolge in der du elemente bearbeitest wichtig sind.

So kann man diese in die Queue Reinhauen und schlichtweg wieder rausnehmen ohne das man sich darum kümmern muss wo genau den elemente stehen. Auch interessiert mich die länge nicht. Und man kann sie gut für paralellisierung benutzen.

Als beispiel:

Du machst elemente fertig die dann in 2 paralellen Prozessen bearbeitet werden sollen. Der Reihe nach.

Mit einer Liste/oder einem Array. Bekommste hier sehr schnell probleme.

Bei ner queue musste nur dafür sorgen das das Herausnehmen Atomic ist. Also immer nur ein Thread gleichzeitig etwas aus der Queue rausnehmen darf.

Anonsten kannste da Problemlos 20 Threads drauf laufen lassen die sich Fröhlich die elemente ziehen.

Array und List sind sich noch am ähnlichsten. Arrays benutze ich üblicherweise kaum. Dann schon eher Listen.

Arrays haben aber den Vorteil das sie meist ne feste größe haben. Und entsprechend Schneller zu handhaben sind solange man sie nicht vergrössern muss.

Sprich: wenn du weisst das du maximal 50 elemente haben wirst. Dann ist ein Array durchaus sinnvoll.

Wenn du allerdings nicht weisst wieviele elemente reinkommen dann ist ne Liste wesentlich besser. Weil du einfach reinpacken kannst und du dich nicht um die größe kümmern musst. Das übernimmt ja der datentyp für dich.

Sind halt unterschiedliche Datenstrukturen, die sich in der Laufzeitkomplexität verschiedener Operationen unterscheiden. Da musst du halt auswählen, was für deinen Anwendungsfall am besten passt.

Ein Array ist doch meistens die erste Wahl, oder?

Kommt darauf an, ob du vorher die Anzahl an Elementen kennst und was du damit machen willst.

Wenn du ein Array nachträglich vergrößern musst, ist das ziemlich blöd, weil du die ganzen Daten in einen größeren Speicherbereich kopieren musst oder intern ein weiteres Array erzeugen, um die neuen Daten aufzufangen. Eine Liste macht das automatisch für dich.

Wenn du ständig Elemente in deinem Array aus Milliarden Einträgen suchen musst (bspw. Ein File System oder eine Datenbank), dann ist ein Array eben auch nicht so gut. Da würde sich eine Baumstruktur wohl besser anbieten.

Ist also immer eine Frage der Trade-offs für deinen Anwendungsfall


DasZitrone 
Fragesteller
 10.05.2022, 15:31

Ist es einfach möglich, eine Queue in ein JSON Format umzuwandeln?

0
procoder42  10.05.2022, 16:33
@DasZitrone

Im Prinzip kannst du alle Datenstrukturen serialisieren. Aber was soll denn der Vorteil davon sein ?

0