Ce face TreeMap.ceilingKey
Aceste metode caută cheia cea mai apropiată de o valoare dată, fără ca valoarea să existe în map. floorKey(x) este foarte util pentru tabele de praguri: tarife pe kilograme, calificative pe punctaje, impozite pe tranșe.
Variantele ceilingEntry și floorEntry returnează direct perechea (cheie și valoare). Toate returnează null când nu există o astfel de cheie. Variantele stricte sunt higherKey (>) și lowerKey (<).
Parametri
| Parametru | Descriere |
|---|---|
key |
Valoarea de referință. |
Ce returnează
Cheia (sau perechea) găsită ori null.
Exemple
Exemplul 1: Calificativul după punctaj (floorEntry)
Pragurile sunt chei; pentru un punctaj luăm pragul cel mai mare care nu îl depășește.
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
TreeMap<Integer, String> praguri = new TreeMap<>();
praguri.put(0, "Insuficient");
praguri.put(50, "Suficient");
praguri.put(70, "Bine");
praguri.put(90, "Foarte bine");
for (int punctaj : new int[] {35, 50, 84, 97}) {
System.out.println(punctaj + " puncte: " + praguri.floorEntry(punctaj).getValue()
+ " (prag " + praguri.floorKey(punctaj) + ")");
}
}
}
Rezultat
35 puncte: Insuficient (prag 0)
50 puncte: Suficient (prag 50)
84 puncte: Bine (prag 70)
97 puncte: Foarte bine (prag 90)
Exemplul 2: Coletul încape în ce cutie?
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
TreeMap<Integer, Integer> cutii = new TreeMap<>(); // kg maxim -> preț în lei
cutii.put(2, 15);
cutii.put(5, 22);
cutii.put(10, 35);
for (int kg : new int[] {1, 5, 7, 12}) {
Integer cutie = cutii.ceilingKey(kg);
if (cutie == null) {
System.out.println(kg + " kg: prea greu, nu avem cutie");
} else {
System.out.println(kg + " kg: cutia de " + cutie + " kg, " + cutii.get(cutie) + " lei");
}
}
}
}
Rezultat
1 kg: cutia de 2 kg, 15 lei
5 kg: cutia de 5 kg, 22 lei
7 kg: cutia de 10 kg, 35 lei
12 kg: prea greu, nu avem cutie
Greșeli frecvente
- Nu verifici
null: pentru o valoare mai mică decât prima cheie,floorKeyreturneazănull. - Folosești
get(x)pentru praguri.getcaută doar cheia exactă; pentru „cel mai apropiat prag” foloseștefloorEntry.
Comenzi înrudite
TreeMap: Dicționar care ține cheile mereu sortate și oferă căutări de tip „prima cheie”, „cea mai apropiată cheie”, „intervalul de chei”.TreeSet.ceiling: ceiling(x) găsește cel mai mic element mai mare sau egal cu x; floor(x) cel mai mare element mai mic sau egal cu x.TreeMap.firstKey: firstKey() returnează cea mai mică cheie dintr-un TreeMap, lastKey() pe cea mai mare. Pe un map gol aruncă excepție.TreeMap.headMap: headMap(x) dă partea unui TreeMap cu cheile mai mici decât x; tailMap(x) partea cu cheile mai mari sau egale.