PriorityQueue initial capacity

unknown

Bekanntes Mitglied
Hallo zusammen

Ich möchte in einem Programm, die Klasse PriorityQueue mit einem Comparator verwenden.
Allerdings wird bei der Initialisierung im Konstruktor neben dem Comparator noch ein Integer verlangt.

Ich weiss nicht, was diese Zahl bewirken soll.
Wenn ich jetzt die PriorityQueue für eine selbstgeschriebene Klasse verwenden möchte, welche Zahl müsste ich da eingeben?

In der Beschreibung steht folgendes:
"Creates a PriorityQueue with the specified initial capacity that orders its elements according to the specified comparator."

Bringt mich allerdings nicht weiter.
 

rme

Top Contributor
Hallo,

die Queue wird intern als Array implementiert. Mit dem Integer kannst du angeben, wie groß das beim Erstellen sein soll - denn wenn du viele Werte hinzufügst, wird das Array in der Größe immer verdoppelt, was eine sehr teure Operation ist (neuen Speicher anfordern, alten kopieren). Wenn es initial die Größe 16 hat, wird es beim 17. verdoppelt, danach beim 33., beim 65. usw.

Wenn du also abschätzen kannst, wie viele Werte da ungefähr rein sollen, solltest du diese Zahl als Integer angeben.
 

unknown

Bekanntes Mitglied
Danke für die Antwort.

Was mich allerdings immer noch etwas irritiert ist:

"Creates a PriorityQueue with the specified initial capacity that orders its elements according to their natural ordering."

Wieso steht da "according to their natural ordering"? Was hat die Kapazität denn mit der Reihenfolge zu tun?
 

rme

Top Contributor
Das ist so gemeint: "Creates a PriorityQueue (with the specified initial capacity) that orders its elements according to their natural ordering.", d.h. die Queue sortiert entsprechend der Reihenfolge des Comparators.
 

Ähnliche Java Themen

Neue Themen


Oben