Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Alkioiden Rajoittaminen ja Ohittaminen Limit()- ja Skip()-Metodeilla | Välimuotoiset Operaatiot Stream API:ssa
Stream API

bookAlkioiden Rajoittaminen ja Ohittaminen Limit()- ja Skip()-Metodeilla

Java Stream API tarjoaa kätevät menetelmät tietokokoelmien käsittelyyn. Kaksi hyödyllistä menetelmää, limit() ja skip(), mahdollistavat sen, että voit määrittää, kuinka monta alkiota käsitellään virrassa tai ohittaa tietyn määrän alkioita. Tämä voi olla hyödyllistä suorituskyvyn optimoinnissa suurten tietomäärien kanssa työskenneltäessä.

Mitä nämä menetelmät ovat?

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 } }

Tässä esimerkissä käytetään limit(10)-metodia rajoittamaan virta ensimmäiseen kymmeneen alkioon, jolloin vain nämä alkiot käsitellään.

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 } }

Tässä käytetään skip(5)-metodia ohittamaan viisi ensimmäistä alkiota ja käsittely aloitetaan kuudennesta alkiosta eteenpäin.

Käytännön esimerkki

Kuvittele työskenteleväsi tehtaassa, jossa on lista 50 osasta, jotka vaativat tarkastuksen. Sinun tarvitsee tarkistaa vain ensimmäiset 10 osaa, kun taas toinen asiantuntija hoitaa loput. Tässä tapauksessa voit käyttää limit(10).

Jos ensimmäiset 20 osaa on jo tarkastettu ja sinun tulee aloittaa osasta 21, voit käyttää skip(20).

Toteutetaan nyt tämä tilanne koodissa.

Käytännön sovellus

Tehtaalla on tarve käsitellä osia. Käytössä on lista 50 osasta ja ensimmäiset 20 tulee ohittaa, minkä jälkeen seuraavat 10 tulee käsitellä.

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 + "'}"; } }

Tässä koodissa käytetään Supplier-rajapintaa luomaan dynaamisesti Part-olioita. UUID-kirjasto auttaa luomaan yksilöllisiä tunnisteita jokaiselle osalle.

Käyttämällä Stream.generate(partSupplier), joka ottaa Supplier-olion, luodaan virta osista, joka tuottaa alkioita jatkuvasti, kunnes sitä rajoitetaan metodilla limit(50).

Seuraavaksi skip(20) ohittaa ensimmäiset 20 osaa, ja limit(10) käsittelee vain seuraavat 10 osaa.

Tämä lähestymistapa mahdollistaa tehokkaan datan generoinnin ja käsittelyn ilman, että koko listaa tarvitsee tallentaa muistiin.

1. Mitä limit(n)-metodi tekee virrassa?

2. Mitä rajapintaa käytetään alkioiden tuottamiseen virtaan metodilla Stream.generate()?

3. Mikä menetelmä ohittaa ensimmäiset n alkiota virrassa?

question mark

Mitä limit(n)-metodi tekee virrassa?

Select the correct answer

question mark

Mitä rajapintaa käytetään alkioiden tuottamiseen virtaan metodilla Stream.generate()?

Select the correct answer

question mark

Mikä menetelmä ohittaa ensimmäiset n alkiota virrassa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 9

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Awesome!

Completion rate improved to 2.33

bookAlkioiden Rajoittaminen ja Ohittaminen Limit()- ja Skip()-Metodeilla

Pyyhkäise näyttääksesi valikon

Java Stream API tarjoaa kätevät menetelmät tietokokoelmien käsittelyyn. Kaksi hyödyllistä menetelmää, limit() ja skip(), mahdollistavat sen, että voit määrittää, kuinka monta alkiota käsitellään virrassa tai ohittaa tietyn määrän alkioita. Tämä voi olla hyödyllistä suorituskyvyn optimoinnissa suurten tietomäärien kanssa työskenneltäessä.

Mitä nämä menetelmät ovat?

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 } }

Tässä esimerkissä käytetään limit(10)-metodia rajoittamaan virta ensimmäiseen kymmeneen alkioon, jolloin vain nämä alkiot käsitellään.

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 } }

Tässä käytetään skip(5)-metodia ohittamaan viisi ensimmäistä alkiota ja käsittely aloitetaan kuudennesta alkiosta eteenpäin.

Käytännön esimerkki

Kuvittele työskenteleväsi tehtaassa, jossa on lista 50 osasta, jotka vaativat tarkastuksen. Sinun tarvitsee tarkistaa vain ensimmäiset 10 osaa, kun taas toinen asiantuntija hoitaa loput. Tässä tapauksessa voit käyttää limit(10).

Jos ensimmäiset 20 osaa on jo tarkastettu ja sinun tulee aloittaa osasta 21, voit käyttää skip(20).

Toteutetaan nyt tämä tilanne koodissa.

Käytännön sovellus

Tehtaalla on tarve käsitellä osia. Käytössä on lista 50 osasta ja ensimmäiset 20 tulee ohittaa, minkä jälkeen seuraavat 10 tulee käsitellä.

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 + "'}"; } }

Tässä koodissa käytetään Supplier-rajapintaa luomaan dynaamisesti Part-olioita. UUID-kirjasto auttaa luomaan yksilöllisiä tunnisteita jokaiselle osalle.

Käyttämällä Stream.generate(partSupplier), joka ottaa Supplier-olion, luodaan virta osista, joka tuottaa alkioita jatkuvasti, kunnes sitä rajoitetaan metodilla limit(50).

Seuraavaksi skip(20) ohittaa ensimmäiset 20 osaa, ja limit(10) käsittelee vain seuraavat 10 osaa.

Tämä lähestymistapa mahdollistaa tehokkaan datan generoinnin ja käsittelyn ilman, että koko listaa tarvitsee tallentaa muistiin.

1. Mitä limit(n)-metodi tekee virrassa?

2. Mitä rajapintaa käytetään alkioiden tuottamiseen virtaan metodilla Stream.generate()?

3. Mikä menetelmä ohittaa ensimmäiset n alkiota virrassa?

question mark

Mitä limit(n)-metodi tekee virrassa?

Select the correct answer

question mark

Mitä rajapintaa käytetään alkioiden tuottamiseen virtaan metodilla Stream.generate()?

Select the correct answer

question mark

Mikä menetelmä ohittaa ensimmäiset n alkiota virrassa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 9
some-alt