Применение фильтров: практические примеры
Теперь, когда вы хорошо понимаете основы фильтрации с использованием Java Stream API, давайте рассмотрим несколько практических примеров, чтобы закрепить свои знания.
Фильтрация строк
Предположим, у вас есть список строк, и вы хотите выбрать только те, которые имеют определенную длину или начинаются с определенного символа.
List<String> words = Arrays.asList("apple", "banana", "cherry", "date", "elderberry");
// Фильтрация слов с длиной более 5 символов
List<String> longWords = words.stream()
.filter(word -> word.length() > 5)
.collect(Collectors.toList());
System.out.println(longWords); // [banana, cherry, elderberry]
// Фильтрация слов, начинающихся с 'a'
List<String> wordsStartingWithA = words.stream()
.filter(word -> word.startsWith("a"))
.collect(Collectors.toList());
System.out.println(wordsStartingWithA); // [apple, date]
Фильтрация чисел
Вы также можете использовать Stream API для фильтрации числовых данных, таких как целые числа или числа с плавающей точкой.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// Фильтрация четных чисел
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(evenNumbers); // [2, 4, 6, 8, 10]
// Фильтрация чисел, больших 5
List<Integer> numbersGreaterThan5 = numbers.stream()
.filter(n -> n > 5)
.collect(Collectors.toList());
System.out.println(numbersGreaterThan5); // [6, 7, 8, 9, 10]
Фильтрация пользовательских объектов
Вы также можете применять фильтры к коллекциям пользовательских объектов, таких как объекты Person
.
class Person {
private String name;
private int age;
// Getters, setters, and constructor
}
List<Person> persons = Arrays.asList(
new Person("John", 30),
new Person("Jane", 25),
new Person("Bob", 35),
new Person("Alice", 28)
);
// Фильтрация людей старше 30 лет
List<Person> personsOlderThan30 = persons.stream()
.filter(p -> p.getAge() > 30)
.collect(Collectors.toList());
System.out.println(personsOlderThan30); // [Person(name=Bob, age=35)]
// Фильтрация людей с именами, начинающимися с 'J'
List<Person> personsWithNameStartingWithJ = persons.stream()
.filter(p -> p.getName().startsWith("J"))
.collect(Collectors.toList());
System.out.println(personsWithNameStartingWithJ); // [Person(name=John, age=00), Person(name=Jane, age=25)]
Изучив эти практические примеры, вы должны теперь лучше понимать, как эффективно использовать метод filter()
для манипуляции коллекциями в Java.