Ce face SplayTreeMap.firstKeyAfter
firstKeyAfter(k) caută prima cheie strict mai mare decât k; lastKeyBefore(k) caută ultima cheie strict mai mică. Cheia dată nu trebuie să existe în map.
Dacă nu există o astfel de cheie, rezultatul este null. Sunt perfecte pentru întrebări de tipul „care este următorul tren după ora 10?”.
Parametri
| Parametru | Descriere |
|---|---|
key |
Cheia de la care se caută (poate lipsi din map). |
Ce returnează
Cheia vecină sau null.
Exemple
Exemplul 1: Următorul tren
import 'dart:collection';
void main() {
final trenuri = SplayTreeMap<String, String>.of({
'06:15': 'IR 1652 Iași - București',
'09:40': 'R 5612 Iași - Pașcani',
'13:05': 'IR 1654 Iași - Timișoara',
'18:30': 'IC 552 Iași - București',
});
for (final acum in ['08:00', '13:05', '20:00']) {
final urmatorul = trenuri.firstKeyAfter(acum);
print('La $acum: ${urmatorul == null ? 'niciun tren azi' : '$urmatorul ${trenuri[urmatorul]}'}');
}
print('Ultimul plecat înainte de 10:00: ${trenuri.lastKeyBefore('10:00')}');
}
Rezultat
La 08:00: 09:40 R 5612 Iași - Pașcani
La 13:05: 18:30 IC 552 Iași - București
La 20:00: niciun tren azi
Ultimul plecat înainte de 10:00: 09:40
Exemplul 2: Calificativ după prag
lastKeyBefore(nota + 1) găsește pragul cel mai mare care nu depășește nota.
import 'dart:collection';
void main() {
final praguri = SplayTreeMap<int, String>.of({1: 'Insuficient', 5: 'Suficient', 7: 'Bine', 9: 'Foarte bine'});
for (final nota in [4, 5, 8, 10]) {
final prag = praguri.lastKeyBefore(nota + 1)!;
print('$nota -> ${praguri[prag]}');
}
}
Rezultat
4 -> Insuficient
5 -> Suficient
8 -> Bine
10 -> Foarte bine
Greșeli frecvente
- Crezi că
firstKeyAfter(k)poate returna chiark. Caută strict după; ca să incluzi cheia, verifică întâicontainsKey(k).
Comenzi înrudite
SplayTreeMap: Map care ține cheile mereu sortate; parcurgerea și print dau cheile în ordine crescătoare.SplayTreeMap.firstKey: firstKey returnează cea mai mică cheie a unui SplayTreeMap, iar lastKey cea mai mare, sau null dacă e gol.