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.