Gute Nacht an alle,
Ich gerade etwas an einer Priority Queue, welche ich im Forum aufgegriffen habe. Ich möchte hierfür einen getter schreiben, der mir "die nächste potentielle freie ID gibt" ohne dabei allocate zu verwenden und dadurch den Zähler next zu verändern. Habt ihr eine Ahnung wie das geht, denn um ehrlich zu sein, bin ich mir nicht mal sicher, ob dies bei einer PriorityQueue geht.
Mein Ansatz war einen normalen Getter zu schreiben, aber das ging nach hinten los. Der momentane Getter gibt mir bei den vorhandenen ID's: 1,3,4,5 zurück, dass die 6 die nächste freie ID ist, aber das stimmt ja auf keinen Fall...
Ich gerade etwas an einer Priority Queue, welche ich im Forum aufgegriffen habe. Ich möchte hierfür einen getter schreiben, der mir "die nächste potentielle freie ID gibt" ohne dabei allocate zu verwenden und dadurch den Zähler next zu verändern. Habt ihr eine Ahnung wie das geht, denn um ehrlich zu sein, bin ich mir nicht mal sicher, ob dies bei einer PriorityQueue geht.
Mein Ansatz war einen normalen Getter zu schreiben, aber das ging nach hinten los. Der momentane Getter gibt mir bei den vorhandenen ID's: 1,3,4,5 zurück, dass die 6 die nächste freie ID ist, aber das stimmt ja auf keinen Fall...
Code:
public class IdIdentifier {
private final PriorityQueue<Integer> items = new PriorityQueue<>();
private int next = 1;
//Dieser Getter funktioniert nicht
public int getNext() {
return this.next;
}
/**
* Gibt die nächste freie Id zurück
* @return nächste freie id
*/
public int allocate() {
return !items.isEmpty() ? items.poll() : next++;
}
/**
* Markiert die gegebene Id als frei
* @param id id, welche freigeschaltet werden soll
*/
public void free(int id) {
items.add(id);
}