Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Beperken en Overslaan van Elementen met de limit()- en skip()-Methoden | Intermediaire Bewerkingen in Stream API
Stream-API

bookBeperken en Overslaan van Elementen met de limit()- en skip()-Methoden

De Java Stream API biedt handige methoden voor het werken met gegevensverzamelingen. Twee nuttige methoden, limit() en skip(), stellen u in staat om te bepalen hoeveel elementen er in een stream worden verwerkt of om een bepaald aantal elementen over te slaan, wat nuttig kan zijn voor het optimaliseren van de prestaties bij het werken met grote datasets.

Wat zijn deze methoden?

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; import java.util.Arrays; import java.util.List; import java.util.stream.Stream; public class Main { public static void main(String[] args) { List<String> products = Arrays.asList( "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8", "Item 9", "Item 10", "Item 11", "Item 12" ); // Limit processing to the first 10 items products.stream() .limit(10) .forEach(System.out::println); // Output: Item 1, Item 2, ..., Item 10 } }

In dit voorbeeld wordt limit(10) gebruikt om de stream te beperken tot de eerste 10 elementen, zodat alleen deze items worden verwerkt.

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; import java.util.Arrays; import java.util.List; import java.util.stream.Stream; public class Main { public static void main(String[] args) { List<String> products = Arrays.asList( "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8", "Item 9", "Item 10", "Item 11", "Item 12" ); // Skip the first 5 items and process the rest products.stream() .skip(5) // Skips the first 5 items .forEach(System.out::println); // Output: Item 6, Item 7, ..., Item 12 } }

Hier wordt skip(5) gebruikt om de eerste vijf items te negeren en het verwerken te starten vanaf het zesde item.

Praktijkvoorbeeld

Stel, je werkt in een fabriek met een lijst van 50 onderdelen die geïnspecteerd moeten worden. Je hoeft alleen de eerste 10 onderdelen te controleren, terwijl een andere specialist de rest behandelt. In dit geval kun je limit(10) gebruiken.

Als de eerste 20 onderdelen al geïnspecteerd zijn en je moet beginnen bij onderdeel 21, kun je skip(20) gebruiken.

Laten we dit scenario nu implementeren in code.

Praktische Toepassing

In een fabriek moeten onderdelen worden verwerkt. Je hebt een lijst van 50 onderdelen en moet de eerste 20 overslaan, daarna de volgende 10 verwerken.

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637
package com.example; import java.util.UUID; import java.util.function.Supplier; import java.util.stream.Stream; public class Main { public static void main(String[] args) { // Supplier for generating parts Supplier<Part> partSupplier = () -> new Part( (int) (Math.random() * 1000), "Part-" + UUID.randomUUID() ); // Create a stream of 50 parts, skip the first 20, and process the next 10 Stream.generate(partSupplier) .limit(50) // Limit the stream to 50 parts .skip(20) // Skip the first 20 .limit(10) // Process the next 10 .forEach(System.out::println); // Print the parts } } class Part { private int id; private String name; Part(int id, String name) { this.id = id; this.name = name; } @Override public String toString() { return "Part{id=" + id + ", name='" + name + "'}"; } }

In deze code wordt een Supplier gebruikt om dynamisch Part-objecten aan te maken. De UUID-bibliotheek helpt bij het genereren van unieke identificatoren voor elk onderdeel.

Met Stream.generate(partSupplier), dat onze Supplier gebruikt, wordt een stream van onderdelen gecreëerd die elementen blijft genereren totdat deze wordt beperkt met limit(50).

Vervolgens zorgt skip(20) ervoor dat de eerste 20 onderdelen worden overgeslagen, terwijl limit(10) alleen de volgende 10 onderdelen verwerkt.

Deze aanpak maakt efficiënte datageneratie en verwerking mogelijk zonder dat de volledige lijst in het geheugen hoeft te worden opgeslagen.

1. Wat doet de methode limit(n) in een stream?

2. Welke interface wordt gebruikt om elementen te genereren in een stream met Stream.generate()?

3. Welke methode slaat de eerste n elementen in een stream over?

question mark

Wat doet de methode limit(n) in een stream?

Select the correct answer

question mark

Welke interface wordt gebruikt om elementen te genereren in een stream met Stream.generate()?

Select the correct answer

question mark

Welke methode slaat de eerste n elementen in een stream over?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 9

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 show me the code example for this scenario?

What is the difference between limit() and skip() in practice?

Are there any performance considerations when using these methods?

Awesome!

Completion rate improved to 2.33

bookBeperken en Overslaan van Elementen met de limit()- en skip()-Methoden

Veeg om het menu te tonen

De Java Stream API biedt handige methoden voor het werken met gegevensverzamelingen. Twee nuttige methoden, limit() en skip(), stellen u in staat om te bepalen hoeveel elementen er in een stream worden verwerkt of om een bepaald aantal elementen over te slaan, wat nuttig kan zijn voor het optimaliseren van de prestaties bij het werken met grote datasets.

Wat zijn deze methoden?

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; import java.util.Arrays; import java.util.List; import java.util.stream.Stream; public class Main { public static void main(String[] args) { List<String> products = Arrays.asList( "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8", "Item 9", "Item 10", "Item 11", "Item 12" ); // Limit processing to the first 10 items products.stream() .limit(10) .forEach(System.out::println); // Output: Item 1, Item 2, ..., Item 10 } }

In dit voorbeeld wordt limit(10) gebruikt om de stream te beperken tot de eerste 10 elementen, zodat alleen deze items worden verwerkt.

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; import java.util.Arrays; import java.util.List; import java.util.stream.Stream; public class Main { public static void main(String[] args) { List<String> products = Arrays.asList( "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8", "Item 9", "Item 10", "Item 11", "Item 12" ); // Skip the first 5 items and process the rest products.stream() .skip(5) // Skips the first 5 items .forEach(System.out::println); // Output: Item 6, Item 7, ..., Item 12 } }

Hier wordt skip(5) gebruikt om de eerste vijf items te negeren en het verwerken te starten vanaf het zesde item.

Praktijkvoorbeeld

Stel, je werkt in een fabriek met een lijst van 50 onderdelen die geïnspecteerd moeten worden. Je hoeft alleen de eerste 10 onderdelen te controleren, terwijl een andere specialist de rest behandelt. In dit geval kun je limit(10) gebruiken.

Als de eerste 20 onderdelen al geïnspecteerd zijn en je moet beginnen bij onderdeel 21, kun je skip(20) gebruiken.

Laten we dit scenario nu implementeren in code.

Praktische Toepassing

In een fabriek moeten onderdelen worden verwerkt. Je hebt een lijst van 50 onderdelen en moet de eerste 20 overslaan, daarna de volgende 10 verwerken.

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637
package com.example; import java.util.UUID; import java.util.function.Supplier; import java.util.stream.Stream; public class Main { public static void main(String[] args) { // Supplier for generating parts Supplier<Part> partSupplier = () -> new Part( (int) (Math.random() * 1000), "Part-" + UUID.randomUUID() ); // Create a stream of 50 parts, skip the first 20, and process the next 10 Stream.generate(partSupplier) .limit(50) // Limit the stream to 50 parts .skip(20) // Skip the first 20 .limit(10) // Process the next 10 .forEach(System.out::println); // Print the parts } } class Part { private int id; private String name; Part(int id, String name) { this.id = id; this.name = name; } @Override public String toString() { return "Part{id=" + id + ", name='" + name + "'}"; } }

In deze code wordt een Supplier gebruikt om dynamisch Part-objecten aan te maken. De UUID-bibliotheek helpt bij het genereren van unieke identificatoren voor elk onderdeel.

Met Stream.generate(partSupplier), dat onze Supplier gebruikt, wordt een stream van onderdelen gecreëerd die elementen blijft genereren totdat deze wordt beperkt met limit(50).

Vervolgens zorgt skip(20) ervoor dat de eerste 20 onderdelen worden overgeslagen, terwijl limit(10) alleen de volgende 10 onderdelen verwerkt.

Deze aanpak maakt efficiënte datageneratie en verwerking mogelijk zonder dat de volledige lijst in het geheugen hoeft te worden opgeslagen.

1. Wat doet de methode limit(n) in een stream?

2. Welke interface wordt gebruikt om elementen te genereren in een stream met Stream.generate()?

3. Welke methode slaat de eerste n elementen in een stream over?

question mark

Wat doet de methode limit(n) in een stream?

Select the correct answer

question mark

Welke interface wordt gebruikt om elementen te genereren in een stream met Stream.generate()?

Select the correct answer

question mark

Welke methode slaat de eerste n elementen in een stream over?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 9
some-alt