Ce face TreeSet.headSet
headSet(x) dă toate elementele strict mai mici decât x. Cu al doilea argument true, include și x (dacă există). Perechea lui este tailSet(x), care dă elementele mai mari sau egale, iar subSet dă un interval.
Rezultatul nu este o copie, ci o vedere (view) a mulțimii originale: dacă adaugi în original un element din interval, apare și în vedere; dacă ștergi din vedere, dispare și din original. Pentru o copie independentă scrie new TreeSet<>(set.headSet(x)).
Parametri
| Parametru | Descriere |
|---|---|
toElement |
Limita de sus (exclusă, dacă nu dai inclusive = true). |
inclusive |
true ca limita să fie inclusă. |
Ce returnează
O vedere sortată peste elementele din interval.
Exemple
Exemplul 1: Note sub și peste 5
import java.util.List;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
TreeSet<Integer> note = new TreeSet<>(List.of(3, 4, 5, 7, 8, 10));
System.out.println("Sub 5: " + note.headSet(5));
System.out.println("Până la 5 inclusiv: " + note.headSet(5, true));
System.out.println("De la 5 în sus: " + note.tailSet(5, true));
System.out.println("Între 4 și 8: " + note.subSet(4, true, 8, true));
}
}
Rezultat
Sub 5: [3, 4]
Până la 5 inclusiv: [3, 4, 5]
De la 5 în sus: [5, 7, 8, 10]
Între 4 și 8: [4, 5, 7, 8]
Exemplul 2: Vederea este legată de mulțimea originală
Elementul 2 adăugat în original apare în vedere; clear() pe vedere șterge din original toate elementele sub 5.
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
TreeSet<Integer> note = new TreeSet<>(List.of(3, 4, 7, 9));
SortedSet<Integer> picati = note.headSet(5);
note.add(2);
System.out.println("Vedere: " + picati);
picati.clear();
System.out.println("Original după clear pe vedere: " + note);
}
}
Rezultat
Vedere: [2, 3, 4]
Original după clear pe vedere: [7, 9]
Greșeli frecvente
- Te aștepți ca
headSet(5)să includă 5. Varianta cu un argument exclude limita; foloseșteheadSet(5, true). - Adaugi în vedere un element din afara intervalului (
picati.add(8)). ApareIllegalArgumentException.
Comenzi înrudite
TreeSet: Mulțime care ține elementele mereu sortate (crescător sau după un Comparator) și oferă căutări de tip „cel mai mic”, „cel mai apropiat”.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.headMap: headMap(x) dă partea unui TreeMap cu cheile mai mici decât x; tailMap(x) partea cu cheile mai mari sau egale.List.subList: Returnează o vedere a unei porțiuni din listă, de la fromIndex inclusiv la toIndex exclusiv.