Ce face IntStream.mapToObj
mapToObj(f) transformă fiecare int într-un obiect, de exemplu un text: mapToObj(i -> "Rândul " + i). Rezultatul este un Stream<U> obișnuit, pe care poți folosi toList() sau collect.
boxed() este cazul simplu: fiecare int devine un Integer, iar rezultatul este Stream<Integer>. Ai nevoie de el pentru toList() cu numere sau pentru colectori ca groupingBy, care nu există pe IntStream.
Parametri
| Parametru | Descriere |
|---|---|
f |
Funcția care primește un int și returnează un obiect. |
Ce returnează
Un Stream de obiecte (Stream<Integer> pentru boxed).
Exemple
Exemplul 1: boxed pentru o listă de numere
import java.util.List;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
List<Integer> patrate = IntStream.rangeClosed(1, 6).map(i -> i * i).boxed().toList();
System.out.println(patrate);
}
}
Rezultat
[1, 4, 9, 16, 25, 36]
Exemplul 2: mapToObj: locuri numerotate și litere
chars() dă codurile literelor ca int; cu mapToObj le transformăm înapoi în Character.
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
List<String> locuri = IntStream.rangeClosed(1, 4).mapToObj(i -> "Locul " + i).toList();
System.out.println(locuri);
String spatii = "Iasi".chars()
.mapToObj(c -> String.valueOf((char) c))
.collect(Collectors.joining(" "));
System.out.println(spatii);
}
}
Rezultat
[Locul 1, Locul 2, Locul 3, Locul 4]
I a s i
Greșeli frecvente
- Apelezi
toList()saucollect(Collectors.toList())direct peIntStream: nu compilează. Pune întâiboxed(). - Folosești
map(i -> "Locul " + i):mappeIntStreamtrebuie să returneze totint. Pentru obiecte foloseștemapToObj.
Comenzi înrudite
IntStream: Un stream de numere int simple, cu sum, average, min, max; IntStream.of îl creează direct din valori.IntStream.range: Creează șirul de numere întregi dintre două limite: range fără ultima valoare, rangeClosed cu ea inclusă.Stream.mapToInt: Transformă elementele în numere primitive (int, long, double) și dă acces la sum(), average(), max().Stream.map: Transformă fiecare element al stream-ului în altă valoare, eventual de alt tip.