Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Elementen Filteren met de filter()-Methode | Intermediaire Bewerkingen in Stream API
Stream-API

bookElementen Filteren met de filter()-Methode

Bij het werken met gegevensverzamelingen in Java is het vaak nodig om specifieke elementen te selecteren die aan bepaalde voorwaarden voldoen. Traditioneel vereist dit lussen en voorwaardelijke instructies, waardoor de code uitgebreider wordt. De filter()-methode biedt hiervoor een oplossing.

Deze methode is al gebruikt in onze voorbeelden, maar we hebben nog niet in detail besproken wat deze als argument accepteert. Het accepteert een functionele interface Predicate<T>, die bepaalt of een element moet worden opgenomen in de resulterende stream.

Stream<T> filter(Predicate<? super T> predicate);

Hier is T het type van de elementen in de stream, en Predicate<? super T> is de filtervoorwaarde die wordt gebruikt om elk element te controleren.

Praktische Toepassing

Stel, je hebt een lijst met werknemers, elk met een name en yearsOfExperience in het bedrijf. Je wilt alleen degenen selecteren die langer dan 5 jaar bij het bedrijf werken om hen een bonus of extra voordelen aan te bieden.

Main.java

Main.java

copy
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
package com.example; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; class Employee { private final String name; private final int yearsOfExperience; public Employee(String name, int yearsOfExperience) { this.name = name; this.yearsOfExperience = yearsOfExperience; } public String getName() { return name; } public int getYearsOfExperience() { return yearsOfExperience; } @Override public String toString() { return name + " (" + yearsOfExperience + " years)"; } } public class Main { public static void main(String[] args) { List<Employee> employees = Arrays.asList( new Employee("John", 6), new Employee("Sarah", 4), new Employee("Mike", 7), new Employee("Anna", 3), new Employee("Tom", 8) ); // Filtering employees with more than 5 years of experience List<Employee> experiencedEmployees = employees.stream() .filter(e -> e.getYearsOfExperience() > 5) .toList(); System.out.println("Experienced employees: " + experiencedEmployees); } }

In dit voorbeeld wordt een stream van werknemers gemaakt met behulp van stream(). Vervolgens worden met de filter-methode de werknemers gefilterd die meer dan 5 jaar ervaring hebben.

Het resultaat is een nieuwe lijst die alleen die werknemers bevat die aan deze voorwaarde voldoen.

Wanneer filter gebruiken

In de meeste gevallen is het beter om filter() aan het begin te gebruiken om de hoeveelheid gegevens voor volgende bewerkingen te verminderen. Dit verbetert de prestaties omdat latere bewerkingen worden uitgevoerd op een kleinere dataset.

Voorbeeld

Als je een lijst met werknemers hebt en je wilt eerst diegenen filteren met meer dan 5 jaar ervaring en vervolgens de overgebleven werknemers naar een ander formaat transformeren, is het logisch om te beginnen met filteren.

List<Employee> result = employees.stream()
        .filter(e -> e.getYearsOfExperience() > 5)  // First, `filter`
        .map(e -> e.getName())  // Then apply other operations
        .toList();

Zoals te zien is in dit voorbeeld, plaats je de filter() vóór de map() methode omdat dit het mogelijk maakt om eerst het aantal elementen waarmee je moet werken te verminderen. Je filtert werknemers met meer dan 5 jaar ervaring en extraheert vervolgens hun namen.

Deze volgorde van operaties is efficiënt omdat het onnodige gegevensverwerking tijdens de transformatiefase voorkomt.

1. Wat doet de filter()-methode in Stream API?

2. Welk type argument accepteert de filter()-methode?

3. Wat gebeurt er als je een voorwaarde gebruikt in de filter()-methode die altijd false retourneert?

question mark

Wat doet de filter()-methode in Stream API?

Select the correct answer

question mark

Welk type argument accepteert de filter()-methode?

Select the correct answer

question mark

Wat gebeurt er als je een voorwaarde gebruikt in de filter()-methode die altijd false retourneert?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 2

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Awesome!

Completion rate improved to 2.33

bookElementen Filteren met de filter()-Methode

Veeg om het menu te tonen

Bij het werken met gegevensverzamelingen in Java is het vaak nodig om specifieke elementen te selecteren die aan bepaalde voorwaarden voldoen. Traditioneel vereist dit lussen en voorwaardelijke instructies, waardoor de code uitgebreider wordt. De filter()-methode biedt hiervoor een oplossing.

Deze methode is al gebruikt in onze voorbeelden, maar we hebben nog niet in detail besproken wat deze als argument accepteert. Het accepteert een functionele interface Predicate<T>, die bepaalt of een element moet worden opgenomen in de resulterende stream.

Stream<T> filter(Predicate<? super T> predicate);

Hier is T het type van de elementen in de stream, en Predicate<? super T> is de filtervoorwaarde die wordt gebruikt om elk element te controleren.

Praktische Toepassing

Stel, je hebt een lijst met werknemers, elk met een name en yearsOfExperience in het bedrijf. Je wilt alleen degenen selecteren die langer dan 5 jaar bij het bedrijf werken om hen een bonus of extra voordelen aan te bieden.

Main.java

Main.java

copy
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
package com.example; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; class Employee { private final String name; private final int yearsOfExperience; public Employee(String name, int yearsOfExperience) { this.name = name; this.yearsOfExperience = yearsOfExperience; } public String getName() { return name; } public int getYearsOfExperience() { return yearsOfExperience; } @Override public String toString() { return name + " (" + yearsOfExperience + " years)"; } } public class Main { public static void main(String[] args) { List<Employee> employees = Arrays.asList( new Employee("John", 6), new Employee("Sarah", 4), new Employee("Mike", 7), new Employee("Anna", 3), new Employee("Tom", 8) ); // Filtering employees with more than 5 years of experience List<Employee> experiencedEmployees = employees.stream() .filter(e -> e.getYearsOfExperience() > 5) .toList(); System.out.println("Experienced employees: " + experiencedEmployees); } }

In dit voorbeeld wordt een stream van werknemers gemaakt met behulp van stream(). Vervolgens worden met de filter-methode de werknemers gefilterd die meer dan 5 jaar ervaring hebben.

Het resultaat is een nieuwe lijst die alleen die werknemers bevat die aan deze voorwaarde voldoen.

Wanneer filter gebruiken

In de meeste gevallen is het beter om filter() aan het begin te gebruiken om de hoeveelheid gegevens voor volgende bewerkingen te verminderen. Dit verbetert de prestaties omdat latere bewerkingen worden uitgevoerd op een kleinere dataset.

Voorbeeld

Als je een lijst met werknemers hebt en je wilt eerst diegenen filteren met meer dan 5 jaar ervaring en vervolgens de overgebleven werknemers naar een ander formaat transformeren, is het logisch om te beginnen met filteren.

List<Employee> result = employees.stream()
        .filter(e -> e.getYearsOfExperience() > 5)  // First, `filter`
        .map(e -> e.getName())  // Then apply other operations
        .toList();

Zoals te zien is in dit voorbeeld, plaats je de filter() vóór de map() methode omdat dit het mogelijk maakt om eerst het aantal elementen waarmee je moet werken te verminderen. Je filtert werknemers met meer dan 5 jaar ervaring en extraheert vervolgens hun namen.

Deze volgorde van operaties is efficiënt omdat het onnodige gegevensverwerking tijdens de transformatiefase voorkomt.

1. Wat doet de filter()-methode in Stream API?

2. Welk type argument accepteert de filter()-methode?

3. Wat gebeurt er als je een voorwaarde gebruikt in de filter()-methode die altijd false retourneert?

question mark

Wat doet de filter()-methode in Stream API?

Select the correct answer

question mark

Welk type argument accepteert de filter()-methode?

Select the correct answer

question mark

Wat gebeurt er als je een voorwaarde gebruikt in de filter()-methode die altijd false retourneert?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 2
some-alt