PriorityQueue remove

unknown

Bekanntes Mitglied
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]
 
Zuletzt bearbeitet:

redJava99

Bekanntes Mitglied
Hallo,
zu 1) Zitat aus der JavaDoc: "The head of this queue is the least element with respect to the specified ordering."
Die PriorityQueue gibt dir also per Definition immer das kleinste Element.
2) Die Quelltextausschnitte sind ja recht reduziert - aber was da ist, sieht gut aus.
3) Hängt z.B. von der Version der auf dem anderen Betriebssystem installierten JVM ab. Verwendest du einen 1.7-Compiler, läuft es auch nur unter einer JRE v. >= 1.7. Andere Hindernisse könnten externe (ggf. plattformspezifische) Bibliotheken sein.
 

unknown

Bekanntes Mitglied
Das ist noch meine Context-Klasse.

Müsste ich da die hachCode und equals Methoden überschreiben, wenn ich nach dem Lehrbuch vorgehen möchte, oder ist das nicht nötig (es funktioniert ja auch so)?

[Java]
class Context{
private String value;
private int key;

public Context(String value, int key){
this.key = key;
this.value = value;
}

public String getValue(){
return this.value;
}

public int getKey(){

return this.key;
}

public void setValue(String value){
this.value = value;
}

public void setKey(int key){
this.key = key;
}
}
[/Java]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Probleme im Umgang mit PriorityQueue Java Basics - Anfänger-Themen 75
M Getter einer PriorityQueue Java Basics - Anfänger-Themen 1
Shizmo PriorityQueue mit Objekten Java Basics - Anfänger-Themen 10
U PriorityQueue initial capacity Java Basics - Anfänger-Themen 3
SheldoN Sortieren in PriorityQueue Java Basics - Anfänger-Themen 6
P PriorityQueue mit Einfügereihenfolge Java Basics - Anfänger-Themen 6
B PriorityQueue im dijkstra Algorithmus implementieren Java Basics - Anfänger-Themen 4
G Datentypen PriorityQueue und Map Java Basics - Anfänger-Themen 4
S PriorityQueue? Java Basics - Anfänger-Themen 2
H Membervariablen für PriorityQueue vergleichen? Java Basics - Anfänger-Themen 7
R PriorityQueue Java Basics - Anfänger-Themen 3
krgewb remove in for Java Basics - Anfänger-Themen 5
D remove Object von einer Liste von Obejcts Java Basics - Anfänger-Themen 3
G Java LinkedList remove Methode Java Basics - Anfänger-Themen 5
D remove arraylist by id not work Java Basics - Anfänger-Themen 6
H Collections JTree remove zeigt keinen Effekt! Java Basics - Anfänger-Themen 8
B Sorting List und Remove Java Basics - Anfänger-Themen 2
P Map - remove() ? Java Basics - Anfänger-Themen 46
Hacer remove at index Java Basics - Anfänger-Themen 31
J Methoden Doppelt verkettete Liste remove(Object) Java Basics - Anfänger-Themen 8
S Vererbung remove elment from Array Java Basics - Anfänger-Themen 0
J easy remove method Java Basics - Anfänger-Themen 1
K Methoden Probleme mit LinkedList.remove(object) Java Basics - Anfänger-Themen 1
M ArrayList - remove() löscht nicht! - weiß nicht wieso! Java Basics - Anfänger-Themen 8
B map.remove(long) Java Basics - Anfänger-Themen 5
Q queue.remove Element trotzdem noch vorhanden. Java Basics - Anfänger-Themen 10
B LinkedList remove Java Basics - Anfänger-Themen 5
I Liste Remove erstes Element Java Basics - Anfänger-Themen 5
D Wie Iterator Remove implementieren? Java Basics - Anfänger-Themen 11
W Treemap remove Java Basics - Anfänger-Themen 5
H Remove Methode von List Java Basics - Anfänger-Themen 6
W ArrayLists: Verständnisproblem bei remove() Java Basics - Anfänger-Themen 2
C Datentypen ArrayList.remove(index) hinterlässt leeres Feld Java Basics - Anfänger-Themen 5
H TreeMap.remove(value) - und nicht mit key! Geht das? Java Basics - Anfänger-Themen 18
S OOP ArrayList Klasse nachbauen, prob mit remove Java Basics - Anfänger-Themen 5
U ArrayList.remove(i) funktioniert nicht Java Basics - Anfänger-Themen 9
J Remove from an AraayList Java Basics - Anfänger-Themen 8
J Iterator remove()? Java Basics - Anfänger-Themen 5
T ArrayList#remove Java Basics - Anfänger-Themen 8
M ArrayList remove Element? Java Basics - Anfänger-Themen 3
B HashMap remove Java Basics - Anfänger-Themen 2
J TreeSet methode Remove Java Basics - Anfänger-Themen 13
C Add / Remove Panel Java Basics - Anfänger-Themen 2
J remove Problem Java Basics - Anfänger-Themen 8
M remove()-Methode eines Iterators Java Basics - Anfänger-Themen 3
megachucky remove bei Vector klappt nicht Java Basics - Anfänger-Themen 11
M Problem mit Iterator.remove() Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben