SplayTreeMap.firstKeyAfter în Dart

firstKeyAfter dă cea mai mică cheie mai mare decât cea dată; lastKeyBefore dă cea mai mare cheie mai mică.

Sintaxă
K? firstKeyAfter(K key)
K? lastKeyBefore(K key)

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 chiar k. Caută strict după; ca să incluzi cheia, verifică întâi containsKey(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.