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 | Sectie
Practice
Projects
Quizzes & Challenges
Quizzen
Challenges
/
Stream-API in Java

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 het gebruik van lussen en voorwaardelijke instructies, waardoor de code omslachtiger 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. De methode neemt een functionele interface Predicate<T> aan, 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 van werknemers, elk met een name en yearsOfExperience in het bedrijf. Je wilt alleen degenen selecteren die langer dan 5 jaar bij het bedrijf zijn 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 aangemaakt met 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 er een lijst met werknemers is en eerst diegenen met meer dan 5 jaar ervaring moeten worden gefilterd en vervolgens de overgebleven werknemers naar een ander formaat moeten worden getransformeerd, 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 werkt te verminderen. Je filtert werknemers met meer dan 5 jaar ervaring en haalt vervolgens hun namen op.

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 methode filter()?

3. Wat gebeurt er als je een voorwaarde gebruikt in de methode filter() 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 methode filter()?

Select the correct answer

question mark

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

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 17

Vraag AI

expand

Vraag AI

ChatGPT

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

Sectie 1. Hoofdstuk 17
some-alt