Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Elementen Ophalen uit een Stream met findFirst() en findAny() | Terminale Operaties in de Stream API
Stream-API

bookElementen Ophalen uit een Stream met findFirst() en findAny()

In de Stream API kun je ook één overeenkomend element uit de gehele stream halen.

Bijvoorbeeld, in een online winkel kun je zoeken naar het eerste afgeprijsde product of een willekeurig artikel op voorraad. In zulke gevallen zijn de methoden findFirst en findAny nuttig omdat ze je in staat stellen snel een element uit een gegevensstroom te halen.

De findFirst()-methode

De findFirst()-methode wordt gebruikt om het eerste element in een stream op te halen. Dit is vooral nuttig wanneer de volgorde van elementen van belang is, bijvoorbeeld bij het werken met een geordende stream.

Optional<T> findFirst();

Deze methode retourneert een Optional<T>, wat betekent dat het element mogelijk wel of niet gevonden wordt.

Voorbeeldgebruik

In een online winkel is het nodig om het eerste afgeprijsde product te vinden en de naam ervan af te drukken:

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637383940
package com.example; import java.util.List; import java.util.Optional; import java.util.Arrays; public class Main { public static void main(String[] args) { List<Product> products = Arrays.asList( new Product("Laptop", false), new Product("Smartphone", true), new Product("Tablet", true) ); Optional<Product> discountedProduct = products.parallelStream() .filter(Product::hasDiscount) .findFirst(); discountedProduct.ifPresent(product -> System.out.println("Discounted product: " + product.getName())); } } class Product { private String name; private boolean discount; public Product(String name, boolean discount) { this.name = name; this.discount = discount; } public boolean hasDiscount() { return discount; } public String getName() { return name; } }

De code maakt een lijst van Product-objecten, elk met een discount-veld. De methode filter(Product::hasDiscount) selecteert alleen producten met korting, en findFirst() haalt de eerste op. Als er een product wordt gevonden, wordt de naam ervan afgedrukt.

De findAny()-methode

De findAny()-methode haalt een willekeurig element uit een stream. Deze methode is vooral nuttig bij parallelle verwerking, omdat het het eerste beschikbare element kan retourneren, waardoor het in sommige gevallen sneller is dan findFirst().

Optional<T> findAny();

Net als findFirst() retourneert deze methode een Optional<T>, waarmee problemen met null worden vermeden.

Voorbeeldgebruik

Een willekeurig beschikbaar product opzoeken en de naam afdrukken:

Main.java

Main.java

copy
123456789101112131415161718192021222324252627282930313233343536373839404142
package com.example; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Optional; import java.util.stream.Stream; public class Main { public static void main(String[] args) { List<Product> products = Arrays.asList( new Product("Laptop", false), new Product("Smartphone", true), new Product("Tablet", true) ); Optional<Product> availableProduct = products.parallelStream() .filter(Product::hasDiscount) .findAny(); availableProduct.ifPresent(product -> System.out.println("Product found: " + product.getName())); } } class Product { private String name; private boolean discount; public Product(String name, boolean discount) { this.name = name; this.discount = discount; } public boolean hasDiscount() { return discount; } public String getName() { return name; } }

Deze code maakt een products lijst aan met Product objecten die een discount veld bevatten. De methode filter(Product::hasDiscount) filtert alleen de producten met korting eruit, en findAny() selecteert er willekeurig één. Als er een product wordt gevonden, wordt de naam ervan afgedrukt.

1. Wat geeft de methode findFirst() terug in de Stream API?

2. Wat is het belangrijkste verschil tussen findAny() en findFirst()?

3. Welke methode presteert beter bij parallelle streams?

question mark

Wat geeft de methode findFirst() terug in de Stream API?

Select the correct answer

question mark

Wat is het belangrijkste verschil tussen findAny() en findFirst()?

Select the correct answer

question mark

Welke methode presteert beter bij parallelle streams?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 10

Vraag AI

expand

Vraag AI

ChatGPT

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

Suggested prompts:

Can you explain the difference between findFirst() and findAny() in more detail?

When should I use findFirst() versus findAny()?

Can you provide more examples of using these methods in different scenarios?

Awesome!

Completion rate improved to 2.33

bookElementen Ophalen uit een Stream met findFirst() en findAny()

Veeg om het menu te tonen

In de Stream API kun je ook één overeenkomend element uit de gehele stream halen.

Bijvoorbeeld, in een online winkel kun je zoeken naar het eerste afgeprijsde product of een willekeurig artikel op voorraad. In zulke gevallen zijn de methoden findFirst en findAny nuttig omdat ze je in staat stellen snel een element uit een gegevensstroom te halen.

De findFirst()-methode

De findFirst()-methode wordt gebruikt om het eerste element in een stream op te halen. Dit is vooral nuttig wanneer de volgorde van elementen van belang is, bijvoorbeeld bij het werken met een geordende stream.

Optional<T> findFirst();

Deze methode retourneert een Optional<T>, wat betekent dat het element mogelijk wel of niet gevonden wordt.

Voorbeeldgebruik

In een online winkel is het nodig om het eerste afgeprijsde product te vinden en de naam ervan af te drukken:

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637383940
package com.example; import java.util.List; import java.util.Optional; import java.util.Arrays; public class Main { public static void main(String[] args) { List<Product> products = Arrays.asList( new Product("Laptop", false), new Product("Smartphone", true), new Product("Tablet", true) ); Optional<Product> discountedProduct = products.parallelStream() .filter(Product::hasDiscount) .findFirst(); discountedProduct.ifPresent(product -> System.out.println("Discounted product: " + product.getName())); } } class Product { private String name; private boolean discount; public Product(String name, boolean discount) { this.name = name; this.discount = discount; } public boolean hasDiscount() { return discount; } public String getName() { return name; } }

De code maakt een lijst van Product-objecten, elk met een discount-veld. De methode filter(Product::hasDiscount) selecteert alleen producten met korting, en findFirst() haalt de eerste op. Als er een product wordt gevonden, wordt de naam ervan afgedrukt.

De findAny()-methode

De findAny()-methode haalt een willekeurig element uit een stream. Deze methode is vooral nuttig bij parallelle verwerking, omdat het het eerste beschikbare element kan retourneren, waardoor het in sommige gevallen sneller is dan findFirst().

Optional<T> findAny();

Net als findFirst() retourneert deze methode een Optional<T>, waarmee problemen met null worden vermeden.

Voorbeeldgebruik

Een willekeurig beschikbaar product opzoeken en de naam afdrukken:

Main.java

Main.java

copy
123456789101112131415161718192021222324252627282930313233343536373839404142
package com.example; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Optional; import java.util.stream.Stream; public class Main { public static void main(String[] args) { List<Product> products = Arrays.asList( new Product("Laptop", false), new Product("Smartphone", true), new Product("Tablet", true) ); Optional<Product> availableProduct = products.parallelStream() .filter(Product::hasDiscount) .findAny(); availableProduct.ifPresent(product -> System.out.println("Product found: " + product.getName())); } } class Product { private String name; private boolean discount; public Product(String name, boolean discount) { this.name = name; this.discount = discount; } public boolean hasDiscount() { return discount; } public String getName() { return name; } }

Deze code maakt een products lijst aan met Product objecten die een discount veld bevatten. De methode filter(Product::hasDiscount) filtert alleen de producten met korting eruit, en findAny() selecteert er willekeurig één. Als er een product wordt gevonden, wordt de naam ervan afgedrukt.

1. Wat geeft de methode findFirst() terug in de Stream API?

2. Wat is het belangrijkste verschil tussen findAny() en findFirst()?

3. Welke methode presteert beter bij parallelle streams?

question mark

Wat geeft de methode findFirst() terug in de Stream API?

Select the correct answer

question mark

Wat is het belangrijkste verschil tussen findAny() en findFirst()?

Select the correct answer

question mark

Welke methode presteert beter bij parallelle streams?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 10
some-alt