Hallo zusammen
Ich habe eine Frage bezüglich der Methode remove von der PriorityQueue.
Ich möchte da immer das kleinste Element zurückerhalten.
Man kann ja bei der Initialisierung einen Comparator mitgeben, was ich gemacht habe.
Es funktioniert auch alles einwandfrei, sprich, es wird immer das kleinste Element zurückgegeben.
Was mich allerdings etwas irritiert ist, dass ich im Comparator nur die zwei Elemente (bzw. ihre Keys) zusammen vergleiche, und die PriorityQueue liefert mir trotzdem das kleinste Element zurück, ohne dass ich es explizit angeben musste.
Nun zu meine eigentlichen Fragen:
1. Woher weiss die PriorityQueue, dass ich das kleinste Element haben möchte (und nicht beispielsweise das grösste).
2. Bin ich da überhaupt richtig vorgegangen, oder ist es Zufall, dass es richtig funktioniert? Gibt es einen besseren Weg?
3. Würde dieses Programm auch auf einem anderen PC mit einem anderen Betriebssystem (beispielsweise Mac) genau so gut funktioniert? Ich weiss, dass JVM überall gleich laufen sollte, aber ich hörte auch von Fällen, dass ein Programm auf einem Betriebssystem funktioniert hat und auf einem anderen nicht.
Mein Code:
[Java]
//meine Comparatorklasse
class TreeComparator implements Comparator<BinaryTree<Context>>{
@Override
public int compare(BinaryTree<Context> x, BinaryTree<Context> y)
{
return Integer.compare(x.root().getKey(), y.root().getKey());
}
}
//Meine Context-Klasse besteht aus Key und Value.
[/Java]
[Java]
//Meine Queueu
PriorityQueue<BinaryTree<Context>> myPriority = new PriorityQueue<>(35, comparator);
[/Java]
Ich habe eine Frage bezüglich der Methode remove von der PriorityQueue.
Ich möchte da immer das kleinste Element zurückerhalten.
Man kann ja bei der Initialisierung einen Comparator mitgeben, was ich gemacht habe.
Es funktioniert auch alles einwandfrei, sprich, es wird immer das kleinste Element zurückgegeben.
Was mich allerdings etwas irritiert ist, dass ich im Comparator nur die zwei Elemente (bzw. ihre Keys) zusammen vergleiche, und die PriorityQueue liefert mir trotzdem das kleinste Element zurück, ohne dass ich es explizit angeben musste.
Nun zu meine eigentlichen Fragen:
1. Woher weiss die PriorityQueue, dass ich das kleinste Element haben möchte (und nicht beispielsweise das grösste).
2. Bin ich da überhaupt richtig vorgegangen, oder ist es Zufall, dass es richtig funktioniert? Gibt es einen besseren Weg?
3. Würde dieses Programm auch auf einem anderen PC mit einem anderen Betriebssystem (beispielsweise Mac) genau so gut funktioniert? Ich weiss, dass JVM überall gleich laufen sollte, aber ich hörte auch von Fällen, dass ein Programm auf einem Betriebssystem funktioniert hat und auf einem anderen nicht.
Mein Code:
[Java]
//meine Comparatorklasse
class TreeComparator implements Comparator<BinaryTree<Context>>{
@Override
public int compare(BinaryTree<Context> x, BinaryTree<Context> y)
{
return Integer.compare(x.root().getKey(), y.root().getKey());
}
}
//Meine Context-Klasse besteht aus Key und Value.
[/Java]
[Java]
//Meine Queueu
PriorityQueue<BinaryTree<Context>> myPriority = new PriorityQueue<>(35, comparator);
[/Java]
Zuletzt bearbeitet: