Фільтр потоку Java
Потік Java надає метод filter() для фільтрації елементів потоку на основі заданого предикату. Припустімо, ви хочете отримати лише парні елементи вашого списку, тоді ви можете зробити це легко за допомогою методу фільтра.
Цей метод приймає предикат як аргумент і повертає потік, що складається з результатних елементів.
Підпис
Сигнатуру методу Stream filter() наведено нижче:
Stream filter(Predicate predicate)
Параметр
предикат: Він приймає посилання на предикат як аргумент. Предикат - це функціональний інтерфейс. Отже, тут також можна передати лямбда-вираз.
Повернення
Він повертає новий потік.
Приклад Java Stream filter().
У наступному прикладі ми отримуємо та повторюємо відфільтровані дані.
import java.util.*; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,'HP Laptop',25000f)); productsList.add(new Product(2,'Dell Laptop',30000f)); productsList.add(new Product(3,'Lenevo Laptop',28000f)); productsList.add(new Product(4,'Sony Laptop',28000f)); productsList.add(new Product(5,'Apple Laptop',90000f)); productsList.stream() .filter(p ->p.price> 30000) // filtering price .map(pm ->pm.price) // fetching price .forEach(System.out::println); // iterating price } } Вихід:
90000.0
Приклад Java Stream filter() 2
У наступному прикладі ми отримуємо відфільтровані дані у вигляді списку.
import java.util.*; import java.util.stream.Collectors; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class JavaStreamExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,'HP Laptop',25000f)); productsList.add(new Product(2,'Dell Laptop',30000f)); productsList.add(new Product(3,'Lenevo Laptop',28000f)); productsList.add(new Product(4,'Sony Laptop',28000f)); productsList.add(new Product(5,'Apple Laptop',90000f)); List pricesList = productsList.stream() .filter(p ->p.price> 30000) // filtering price .map(pm ->pm.price) // fetching price .collect(Collectors.toList()); System.out.println(pricesList); } } Вихід:
[90000.0]