Documente Academic
Documente Profesional
Documente Cultură
Prezentare 17:
Streams –
operatii
PROGRAMARE ORIENTATA
OBIECT
2020
Utilizare streams
Map
aplicarea unei functii fiecarui element al stream-ului
22.01.2021 POO 2
Utilizare streams
Aplatizare streams
Exemplu – lista caracterelor unice pentru o lista de cuvinte [“streams”,
“in”, “java”] -> [“s,” ”t,” ”r,” “e,” “a,” “m,” “I,” “n,” “j,” “v”]
Varianta 1:
cuvinte.stream()
.map(cuvant -> cuvant.split(“ ”) map(cuvant -> cuvant.split(“ ”) => Stream<String[]>
.distinct() distinct() => Stream<String[]>
.collect(toList()); collect(toList()) => List<String[]>
22.01.2021 POO 3
Utilizare streams
Varianta 2: Arrays.stream()
cuvinte.stream()
.map(cuvant -> cuvant.split(“ ”) converteste fiecare cuvant intr-un
array de litere individuale
.map(Arrays::stream)
.distinct()
.collect(toList());
transforma fiecare array
intr-un stream
Solutie: flatMap
cuvinte.stream()
.map(cuvant -> cuvant.split(“ ”) converteste fiecare cuvant intr-un
array de litere individuale
.flatMap(Arrays::stream)
.distinct()
.collect(toList());
22.01.2021 POO 5
Utilizare streams
22.01.2021 POO 6
Utilizare streams
22.01.2021 POO 7
Utilizare streams
Potrivire si regasire
Potrivire
22.01.2021 POO 9
Utilizare streams
22.01.2021 POO 10
Utilizare streams
22.01.2021 POO 11
Utilizare streams
meniu.stream()
.filter(Fel::eVegetarian)
.findAny(); intorce Optional<Fel>
.ifPresent(fel -> System.out.println(fel.getNume());
22.01.2021 POO 12
Utilizare streams
22.01.2021 POO 13
Utilizare streams
22.01.2021 POO 14
Utilizare streams
Maxim si minim
22.01.2021 POO 15
Utilizare streams
22.01.2021 POO 16
Utilizare streams
Stream-uri numerice
Exemplu - calculul numarului de calorii dintr-un meniu
Ideal:
22.01.2021 POO 17
Utilizare streams
22.01.2021 POO 18
Utilizare streams
22.01.2021 POO 19
Utilizare streams
Intervale numerice
range, rangeClosed
System.out.println(numerePare.count());
50 numere pare de la
1 la 100
22.01.2021 POO 20
Utilizare streams
Creare streams
Streams din valori - Stream.of
22.01.2021 POO 21
Utilizare streams
Stream<String> homeValStream =
Stream.ofNullable(System.getProperty(“home”);
Stream<String> valori =
Stream.of(“config”, “home”, “utilizator”)
.flatMap(key -> Stream.ofNullable(System.getProperty(key);
22.01.2021 POO 22
Utilizare streams
valoare initiala
Stream.iterate(0, n -> n + 2) lambda de tip
.limit(10) UnaryOperator<T>
.forEach(System.out::println);
22.01.2021 POO 23
Utilizare streams
22.01.2021 POO 24
Utilizare streams
Stream.generate(Math::random)
genereaza un stream de 5
.limit(5) numere aleatoare
.forEach(System.out::println);
22.01.2021 POO 25
Utilizare streams
Exemplu – seria Fibonacci – primele 20 de elemente – (0, 1), (1, 1), (1,
2), (2, 3), (3, 5), (5, 8) …
22.01.2021 POO 26
Utilizare streams
Seria Fibonacci – 0, 1, 1, 2, 3, 5, 8, …
22.01.2021 POO 27