Operacje na strumieniach – metody

Strumienie wykorzystują następujące metody:

filter() 
map()
forEach() 
limit()
count()
flatMap()
peek()
allMatch()
collectors()
reduce()
findFirst()
min()
max()

Metoda filter () – zwraca strumień zawierający tylko te elementy dla których filtr zwrócił wartość true z oryginalnego strumienia. Filtrowanie najlepiej stosować na początku, wówczas pozostałe metody zostaną wykonane już tylko na przefiltrowanych wartościach. Warunek filtru może zostać zastosowany z wykorzystaniem interfejsu Predicate:

Predicate<Person> namePredicate = person -> person.getName().equals("Krzysztof");

List<Person> personWithSpecifedName = new ArrayList<>();
personWithSpecifedName = personList.stream()
 .filter(namePredicate)

 .collect(Collectors.toList());
System.out.println(personWithSpecifedName); 

Metoda map() dokonuje mapowania, konwersji obiektów w strumieniu z jednego typu na inny. Np: z tablicy Book można utworzyć strumień który będzie zawierał tylko tytuły która za pomocą metody joining(, ) będą oddzielone przecinkiem.

public static Book[] tablica = {new Book(20.00, "Czysty kod"), 
new Book(29.99, "Pani jeziora"),
new Book(39.99, "Hobbit")
};

public static void metodyCollection(){
 String titles = Stream.of(tablica)
     .map(book -> book.getName())
     .collect(Collectors.joining(", "));
   System.out.println("tylko tytuły \n" + titles);
}
Outcome:
tylko tytuły
Czysty kod,Pani jeziora, Hobbit 

Metoda Peek().  Pozwala przeprowadzić operację na każdym elemencie w strumieniu, zwraca strumień z tymi samymi elementami. W przeciwieństwie do forEach, peek jest metodą typu intermediate.

Metoda limit – zwraca strumień ograniczony do zadanej liczby elementów, pozostałe są ignorowane.

Leave a Comment

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