Потік Java надає метод filter() для фільтрації елементів потоку на основі заданого предикату. Припустімо, ви хочете отримати лише парні елементи вашого списку, тоді ви можете зробити це легко за допомогою методу фільтра.
перевірка в git
Цей метод приймає предикат як аргумент і повертає потік, що складається з результатних елементів.
Підпис
Сигнатуру методу 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 } }
Вихід:
rdbms
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]