package testat_2; import base.GasStation; import java.util.Collection; import java.util.function.Predicate; public abstract class ALowPriceFinder { protected int maxSize; public ALowPriceFinder(int maxSize) {this.maxSize = maxSize;} // Anzahl an gespeicherten Tankstellen public abstract int size(); // Liefert die GasStation auf Rang rank (Rang 1 = bester Platz) public abstract GasStation get(int rank); // Liefert den Rang von GasStation. // Ist GasStation nicht enthalten, wird 0 zurückgegeben // Hinweis: Platz 1 bedeutet Rang 1 public abstract int contains(GasStation station); // Fügt die GasStation station mit Durchschnittspreis averagePrice hinzu, falls GasStation != // null und averagePrice > 0. // Ist sie schon enthalten, wird der Preis auf averagePrice gesetzt // Sind maxSize GasStations enthalten, wird die neue GasStation nur aufgenommen, wenn sie // nicht der letzte in der Liste ist (wenn sie nicht den größten averagePrice hat) // In diesem Fall wird die letzte GasStation gelöscht (sodass nicht mehr als maxGasStation // in der Liste sind) und der neue GasStation aufgenommen // Rückgabe: Rang in der HighaveragePrice-Liste; 0, falls der GasStation nicht hinzugefügt wurde // Hinweis: Zur Vereinfachung sind alle averagePrice-Werte ungleich // Beachten Sie: Ein GasStation kann nur einmal enthalten sein public abstract int add(GasStation GasStation, int averagePrice); // Liefert eine Collection von Tankstellen (GasStation), deren averagePrice <= threshold ist // Rückgabe: Collection, ggf. leer (nicht null) public abstract Collection getStations(int threshold); // Löscht den GasStation GasStation aus der Liste. // Rückgabe = Rang der GasStation, (0, falls GasStation nicht enthalten) public abstract int remove(GasStation station); // Anzahl an gespeicherter Tankstellen, die das Predicate predicate erfüllen public abstract int size(Predicate predicate); }