Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Virran Alkioiden Tarkistaminen Ehtoa Vastaan AllMatch()-Metodilla | Stream API:n Pääteoperaatiot
Quizzes & Challenges
Quizzes
Challenges
/
Stream API

bookVirran Alkioiden Tarkistaminen Ehtoa Vastaan AllMatch()-Metodilla

Työskennellessäsi datavirtojen kanssa, on usein tarpeen tarkistaa, täyttävätkö alkiot tietyt ehdot. Esimerkiksi saatat haluta varmistaa, että kaikki ostoskorin tuotteet ovat varastossa, että vähintään yksi tuote on alennuksessa, tai ettei ole peruutettuja tilauksia.

Näiden tilanteiden käsittelemiseksi Stream API tarjoaa kolme hyödyllistä metodia: allMatch(), anyMatch() ja noneMatch(). Näiden avulla voit nopeasti tarkistaa, täyttävätkö virran alkiot annetun predikaatin.

allMatch()-metodi

Metodi allMatch() tarkistaa, täyttävätkö kaikki virran alkiot annetun predikaatin. Jos yksikin alkio ei täytä ehtoa, metodi palauttaa false.

boolean allMatch(Predicate<? super T> predicate)

Tämä metodi ottaa vastaan predikaatin—funktion, joka palauttaa boolean-arvon—ja soveltaa sitä jokaiseen virran alkioon. Jos kaikki alkiot täyttävät ehdon, palautetaan true; muussa tapauksessa palautetaan false.

Käytännön esimerkki

Verkkokaupassa ilmainen toimitus on saatavilla, jos kaikki ostoskorin tuotteet maksavat yli $10. On tarkistettava, koskeeko ilmainen toimitus nykyistä tilausta.

Main.java

Main.java

copy
1234567891011121314151617
package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(15, 20, 12, 9); // Item prices boolean freeShipping = prices.stream().allMatch(price -> price > 10); if (freeShipping) { System.out.println("Free shipping applied."); } else { System.out.println("Not all items qualify for free shipping."); } } }

Tässä koodissa luodaan lista tuotteiden hinnoista: [15, 20, 12, 9]. Metodi allMatch(price -> price > 10) tarkistaa, että kaikki tuotteet maksavat yli 10 $. Jos ehto täyttyy, näytetään viesti onnistuneesta ilmaisesta toimituksesta; muussa tapauksessa näytetään viesti, että kaikki tuotteet eivät täytä ehtoa.

anyMatch()-metodi

Metodi anyMatch() tarkistaa, täyttääkö vähintään yksi virran alkio annetun predikaatin. Jos vähintään yksi alkio täyttää ehdon, metodi palauttaa true ja lopettaa käsittelyn.

boolean anyMatch(Predicate<? super T> predicate)

Tämä metodi ottaa predikaatin ja soveltaa sitä jokaiseen virran alkioon. Heti kun se löytää ehdon täyttävän alkion, se palauttaa true ja lopettaa suorituksen.

Käytännön esimerkki

Verkkokauppa tarjoaa VIP-ohjelman, jos vähintään yksi tuote ostoskorissa maksaa yli $500. Sinun tulee tarkistaa, täyttääkö asiakas VIP-statuksen ehdot.

Main.java

Main.java

copy
1234567891011121314151617
package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(530, 300, 40, 120); // Item prices boolean hasExpensiveItem = prices.stream().anyMatch(price -> price > 500); if (hasExpensiveItem) { System.out.println("Customer qualifies for VIP status."); } else { System.out.println("No expensive items in the cart."); } } }

Tässä menetelmä anyMatch(price -> price > 500) tarkistaa, onko olemassa vähintään yksi tuote, jonka hinta ylittää 500 $. Jos tällainen löytyy, hasExpensiveItem saa arvon true ja tulostetaan viesti VIP-statukseen oikeuttamisesta; muussa tapauksessa näytetään viesti, jossa ilmoitetaan, ettei ostoskori sisällä kalliita tuotteita.

noneMatch()-metodi

Metodi noneMatch() tarkistaa, ettei yksikään virran alkioista täytä annettua predikaattia. Jos mikään alkio ei täytä ehtoa, metodi palauttaa arvon true.

boolean noneMatch(Predicate<? super T> predicate)

Tämä metodi ottaa predikaatin ja soveltaa sitä jokaiseen alkioon virrassa. Jos mikään alkio ei täytä ehtoa, palautetaan true; muuten palautetaan false.

Käytännön esimerkki

Verkkokauppa ei salli tuotteita, joiden hinta on alle nolla. Sinun tulee tarkistaa, onko ostoskoriin lisätty tällaisia tuotteita.

Main.java

Main.java

copy
1234567891011121314151617
package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(1500, 2000, 3000, 0); // Item prices boolean noFreeItems = prices.stream().noneMatch(price -> price < 0); if (noFreeItems) { System.out.println("All items have valid prices."); } else { System.out.println("The cart contains an item with a zero price."); } } }

Tässä esimerkissä noneMatch(price -> price < 0) tarkistaa, ettei yksikään tuote ole hinnoiteltu alle $0. Jos kaikilla tuotteilla on kelvollinen hinta, tulostetaan viesti, joka vahvistaa tämän; muussa tapauksessa näytetään viesti, joka ilmoittaa tuotteen virheellisestä hinnasta.

1. Mikä metodi tarkistaa, täyttääkö vähintään yksi virran alkio ehdon?

2. Mitä metodia tulisi käyttää varmistaaksesi, ettei listassa ole arvoja, jotka ovat pienempiä kuin nolla?

question mark

Mikä metodi tarkistaa, täyttääkö vähintään yksi virran alkio ehdon?

Select the correct answer

question mark

Mitä metodia tulisi käyttää varmistaaksesi, ettei listassa ole arvoja, jotka ovat pienempiä kuin nolla?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 12

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Suggested prompts:

Can you provide code examples for each of these methods?

What are some common use cases for allMatch(), anyMatch(), and noneMatch()?

How do these methods improve performance compared to manual iteration?

Awesome!

Completion rate improved to 2.33

bookVirran Alkioiden Tarkistaminen Ehtoa Vastaan AllMatch()-Metodilla

Pyyhkäise näyttääksesi valikon

Työskennellessäsi datavirtojen kanssa, on usein tarpeen tarkistaa, täyttävätkö alkiot tietyt ehdot. Esimerkiksi saatat haluta varmistaa, että kaikki ostoskorin tuotteet ovat varastossa, että vähintään yksi tuote on alennuksessa, tai ettei ole peruutettuja tilauksia.

Näiden tilanteiden käsittelemiseksi Stream API tarjoaa kolme hyödyllistä metodia: allMatch(), anyMatch() ja noneMatch(). Näiden avulla voit nopeasti tarkistaa, täyttävätkö virran alkiot annetun predikaatin.

allMatch()-metodi

Metodi allMatch() tarkistaa, täyttävätkö kaikki virran alkiot annetun predikaatin. Jos yksikin alkio ei täytä ehtoa, metodi palauttaa false.

boolean allMatch(Predicate<? super T> predicate)

Tämä metodi ottaa vastaan predikaatin—funktion, joka palauttaa boolean-arvon—ja soveltaa sitä jokaiseen virran alkioon. Jos kaikki alkiot täyttävät ehdon, palautetaan true; muussa tapauksessa palautetaan false.

Käytännön esimerkki

Verkkokaupassa ilmainen toimitus on saatavilla, jos kaikki ostoskorin tuotteet maksavat yli $10. On tarkistettava, koskeeko ilmainen toimitus nykyistä tilausta.

Main.java

Main.java

copy
1234567891011121314151617
package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(15, 20, 12, 9); // Item prices boolean freeShipping = prices.stream().allMatch(price -> price > 10); if (freeShipping) { System.out.println("Free shipping applied."); } else { System.out.println("Not all items qualify for free shipping."); } } }

Tässä koodissa luodaan lista tuotteiden hinnoista: [15, 20, 12, 9]. Metodi allMatch(price -> price > 10) tarkistaa, että kaikki tuotteet maksavat yli 10 $. Jos ehto täyttyy, näytetään viesti onnistuneesta ilmaisesta toimituksesta; muussa tapauksessa näytetään viesti, että kaikki tuotteet eivät täytä ehtoa.

anyMatch()-metodi

Metodi anyMatch() tarkistaa, täyttääkö vähintään yksi virran alkio annetun predikaatin. Jos vähintään yksi alkio täyttää ehdon, metodi palauttaa true ja lopettaa käsittelyn.

boolean anyMatch(Predicate<? super T> predicate)

Tämä metodi ottaa predikaatin ja soveltaa sitä jokaiseen virran alkioon. Heti kun se löytää ehdon täyttävän alkion, se palauttaa true ja lopettaa suorituksen.

Käytännön esimerkki

Verkkokauppa tarjoaa VIP-ohjelman, jos vähintään yksi tuote ostoskorissa maksaa yli $500. Sinun tulee tarkistaa, täyttääkö asiakas VIP-statuksen ehdot.

Main.java

Main.java

copy
1234567891011121314151617
package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(530, 300, 40, 120); // Item prices boolean hasExpensiveItem = prices.stream().anyMatch(price -> price > 500); if (hasExpensiveItem) { System.out.println("Customer qualifies for VIP status."); } else { System.out.println("No expensive items in the cart."); } } }

Tässä menetelmä anyMatch(price -> price > 500) tarkistaa, onko olemassa vähintään yksi tuote, jonka hinta ylittää 500 $. Jos tällainen löytyy, hasExpensiveItem saa arvon true ja tulostetaan viesti VIP-statukseen oikeuttamisesta; muussa tapauksessa näytetään viesti, jossa ilmoitetaan, ettei ostoskori sisällä kalliita tuotteita.

noneMatch()-metodi

Metodi noneMatch() tarkistaa, ettei yksikään virran alkioista täytä annettua predikaattia. Jos mikään alkio ei täytä ehtoa, metodi palauttaa arvon true.

boolean noneMatch(Predicate<? super T> predicate)

Tämä metodi ottaa predikaatin ja soveltaa sitä jokaiseen alkioon virrassa. Jos mikään alkio ei täytä ehtoa, palautetaan true; muuten palautetaan false.

Käytännön esimerkki

Verkkokauppa ei salli tuotteita, joiden hinta on alle nolla. Sinun tulee tarkistaa, onko ostoskoriin lisätty tällaisia tuotteita.

Main.java

Main.java

copy
1234567891011121314151617
package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(1500, 2000, 3000, 0); // Item prices boolean noFreeItems = prices.stream().noneMatch(price -> price < 0); if (noFreeItems) { System.out.println("All items have valid prices."); } else { System.out.println("The cart contains an item with a zero price."); } } }

Tässä esimerkissä noneMatch(price -> price < 0) tarkistaa, ettei yksikään tuote ole hinnoiteltu alle $0. Jos kaikilla tuotteilla on kelvollinen hinta, tulostetaan viesti, joka vahvistaa tämän; muussa tapauksessa näytetään viesti, joka ilmoittaa tuotteen virheellisestä hinnasta.

1. Mikä metodi tarkistaa, täyttääkö vähintään yksi virran alkio ehdon?

2. Mitä metodia tulisi käyttää varmistaaksesi, ettei listassa ole arvoja, jotka ovat pienempiä kuin nolla?

question mark

Mikä metodi tarkistaa, täyttääkö vähintään yksi virran alkio ehdon?

Select the correct answer

question mark

Mitä metodia tulisi käyttää varmistaaksesi, ettei listassa ole arvoja, jotka ovat pienempiä kuin nolla?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 12
some-alt