Przejdź do treści
Strona główna » 1.7 Java Podstawy, Więcej o streamach | Java poradnik

1.7 Java Podstawy, Więcej o streamach | Java poradnik

  • przez
java podstawy

Spis treści

  1. Metody w Stream
  2. Map | Java poradnik
  3. Filter
  4. Collect

Wróćmy do przykładu z poprzedniego wpisu i dodajmy trochę streamów w ramach Java poradnik.

Java poradnik

Map | Java poradnik

Streamy w Java umożliwiają np. metodę map(), która nam mapuje np. listę Car na listę samych vin albo na jakiekolwiek inne obiektu.

Programowanie z użyciem Stream jest trochę trudniejsze ze względu na lambdy w związku z tym na początek można to samo co robią streamy robić za pomocą zwykłych pętli. Np, żeby zrobić to samo co ten stream na górze wystarczy stworzyć nowa List<String>, petlą for się przeiterować przez starą listę i dodać do nowej listy wszystkie viny ze starej. Jak widać stream robi to w znacznie elegantszy sposób.

Trudnością w stream może być lambda użyta powyżej w metodzie : map( (car) -> car.getVin() ).

Ten kawałek kodu mówi, że mapujemy obiekt car ze streamu, na obiekt car.getVin() czyli vin typu String. I wykonuje to dla całego streamu czy listy.

Filter

Aby wykorzystując stream przefiltrować listę i dostać nową listę bez elementów, które nie spełniają warunków, wystarczy zrobić tak :

java

Znowu w metodzie filter jest lambda. Kod powyżej w filter mówi, aby dla każdego elementu streamu czy listy, zachować tylko elementy, które spełniają warunek : car.getVin.length() > 4.
czyli długości vin-u musi być większa od 4. Nasze predykaty czyli warunki do filtrowania, możemy definiować dowolnie.

Collect

Ostatnią metodą w Stream jest .collect, która mówi, do czego mamy przypisać elementy z streamu. W naszych przykładach zawsze wybieramy listę, ale może to być set, map itp.

Można też nie przypisywać streamu do żadnej kolekcji żeby np. wykorzystać go w innej metodzie.

W następnym wpisie przechodzimy już do dziedziczenie w Java.

kurs java

pozdrawiamy,
Zespół Great

Pomocne linki:
Calculations

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *