Ce face Collections.emptyList
Collections.emptyList() returnează o listă goală care nu poate fi modificată. Este bună ca valoare de retur „nu am găsit nimic”, în loc de null: codul care o primește poate face for sau size() fără verificări. Se folosește mereu același obiect, deci nu consumă memorie în plus.
Collections.singletonList(x) returnează o listă nemodificabilă cu exact un element. Spre deosebire de List.of(x), acceptă și null. Variante similare: emptySet, emptyMap, singleton (mulțime), singletonMap.
Din Java 9, List.of() și List.of(x) fac aproape același lucru și sunt mai des folosite în cod nou.
Parametri
| Parametru | Descriere |
|---|---|
o |
Singurul element al listei (poate fi null). |
Ce returnează
O listă nemodificabilă, goală sau cu un element.
Exemple
Exemplul 1: Listă goală în loc de null
import java.util.Collections;
import java.util.List;
import java.util.Map;
public class Main {
static final Map<String, List<String>> cursuri = Map.of("Ana", List.of("Java", "SQL"));
static List<String> cursuriPentru(String elev) {
List<String> c = cursuri.get(elev);
return c != null ? c : Collections.emptyList();
}
public static void main(String[] args) {
for (String elev : new String[] {"Ana", "Radu"}) {
List<String> c = cursuriPentru(elev);
System.out.println(elev + ": " + c.size() + " cursuri " + c);
}
}
}
Rezultat
Ana: 2 cursuri [Java, SQL]
Radu: 0 cursuri []
Exemplul 2: singletonList pentru un singur destinatar
import java.util.Collections;
import java.util.List;
public class Main {
static void trimite(List<String> destinatari, String mesaj) {
for (String d : destinatari) {
System.out.println("Către " + d + ": " + mesaj);
}
}
public static void main(String[] args) {
trimite(Collections.singletonList("ana@exemplu.ro"), "Comanda a fost livrată.");
List<String> unu = Collections.singletonList("Iași");
try {
unu.add("Cluj");
} catch (UnsupportedOperationException e) {
System.out.println("singletonList nu se poate mări");
}
}
}
Rezultat
Către ana@exemplu.ro: Comanda a fost livrată.
singletonList nu se poate mări
Greșeli frecvente
- Returnezi
emptyList()și apoi codul apelant încearcăaddpe ea. ApareUnsupportedOperationException; dacă apelantul trebuie să adauge, returneazănew ArrayList<>(). - Returnezi
nullîn loc de o listă goală. Apelanții trebuie să verifice mereunullși uită.
Comenzi înrudite
List.of: Creează o listă nemodificabilă din valorile date (of) sau dintr-o copie a altei colecții (copyOf).Collections.nCopies: Returnează o listă nemodificabilă cu aceeași valoare repetată de n ori. Utilă pentru valori inițiale și separatoare.Collections.unmodifiableList: Returnează o vedere doar-pentru-citire a unei liste: cine o primește nu o poate modifica, dar schimbările originalului se văd.