Virran Tilastojen Laskeminen Count(), Max() ja Min() -Metodeilla
Ohjelmoinnissa on usein tarpeen laskea kokoelman alkioiden määrä tai löytää niiden pienimmät ja suurimmat arvot.
Ohjelmoijat eivät kuitenkaan yleensä kirjoita omia algoritmeja näihin tehtäviin, sillä käytettävissä on valmiita sisäänrakennettuja menetelmiä. Stream API tarjoaa käteviä menetelmiä kokoelmien käsittelyyn ja mahdollistaa laskutoimitukset virran alkioille.
Näihin menetelmiin kuuluvat count(), max() ja min(), joiden avulla voidaan määrittää alkioiden määrä sekä löytää suurimmat ja pienimmät arvot.
count()-metodi
count()-metodi palauttaa virran alkioiden määrän. Sitä käytetään usein, kun halutaan selvittää kokoelman koko esimerkiksi suodatuksen jälkeen.
long count();
Se ei ota parametreja ja palauttaa primitiivisen long-tyypin.
Käytännön esimerkki
Verkkokaupassa täytyy laskea niiden tuotteiden määrä, joilla on yli 20 %:n alennus.
Main.java
123456789101112131415161718192021222324252627282930313233package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Product> products = List.of( new Product("Laptop", 15.0), new Product("Smartphone", 25.0), new Product("Tablet", 30.0) ); long discountedProducts = products.stream() .filter(product -> product.getDiscount() > 20.0) .count(); System.out.println("Number of products with more than 20% discount: " + discountedProducts); } } class Product { private String name; private double discount; public Product(String name, double discount) { this.name = name; this.discount = discount; } public double getDiscount() { return discount; } }
Tässä esimerkissä filter()-metodi valitsee tuotteet, joilla on alennus yli 20 %, ja count() määrittää niiden määrän.
max()-metodi
max()-metodi palauttaa virran suurimman alkion annetun Comparator-vertailijan perusteella. Jos virta on tyhjä, se palauttaa Optional.empty().
Optional<T> max(Comparator<? super T> comparator);
Käytännön esimerkki
Etsi verkkokaupan kallein tuote sen premium-tuotteena mainostamista varten.
Main.java
12345678910111213141516171819202122232425262728293031323334353637383940package com.example; import java.util.List; import java.util.Optional; import java.util.Comparator; public class Main { public static void main(String[] args) { List<Product> products = List.of( new Product("Laptop", 1200.0), new Product("Smartphone", 800.0), new Product("Tablet", 600.0) ); Optional<Product> mostExpensiveProduct = products.stream() .max(Comparator.comparing(Product::getPrice)); mostExpensiveProduct.ifPresent(product -> System.out.println("Most expensive product: " + product.getName() + " - $" + product.getPrice()) ); } } class Product { private String name; private double price; public Product(String name, double price) { this.name = name; this.price = price; } public double getPrice() { return price; } public String getName() { return name; } }
Tässä koodissa Comparator.comparing(Product::getPrice) vertaa tuotteita hinnan perusteella, ja max() valitsee kalleimman tuotteen.
min()-metodi
min()-metodi on samanlainen kuin max(), mutta se palauttaa pienimmän alkion virrasta annetun Comparator-vertailijan perusteella.
Optional<T> min(Comparator<? super T> comparator);
Käytännön esimerkki
Etsi tuote, jolla on alin varastosaldo, arvioidaksesi täydennystarpeen.
Main.java
12345678910111213141516171819202122232425262728293031323334353637383940package com.example; import java.util.List; import java.util.Optional; import java.util.Comparator; public class Main { public static void main(String[] args) { List<Product> products = List.of( new Product("Laptop", 5), new Product("Smartphone", 0), new Product("Tablet", 2) ); Optional<Product> leastStockProduct = products.stream() .min(Comparator.comparing(Product::getStock)); leastStockProduct.ifPresent(product -> System.out.println("Product with the lowest stock: " + product.getName() + " - " + product.getStock() + " units") ); } } class Product { private String name; private int stock; public Product(String name, int stock) { this.name = name; this.stock = stock; } public int getStock() { return stock; } public String getName() { return name; } }
Tämä koodi määrittää tuotteen, jolla on alin varastosaldo, käyttämällä min()-metodia ja Comparator.comparing(Product::getStock).
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 2.33
Virran Tilastojen Laskeminen Count(), Max() ja Min() -Metodeilla
Pyyhkäise näyttääksesi valikon
Ohjelmoinnissa on usein tarpeen laskea kokoelman alkioiden määrä tai löytää niiden pienimmät ja suurimmat arvot.
Ohjelmoijat eivät kuitenkaan yleensä kirjoita omia algoritmeja näihin tehtäviin, sillä käytettävissä on valmiita sisäänrakennettuja menetelmiä. Stream API tarjoaa käteviä menetelmiä kokoelmien käsittelyyn ja mahdollistaa laskutoimitukset virran alkioille.
Näihin menetelmiin kuuluvat count(), max() ja min(), joiden avulla voidaan määrittää alkioiden määrä sekä löytää suurimmat ja pienimmät arvot.
count()-metodi
count()-metodi palauttaa virran alkioiden määrän. Sitä käytetään usein, kun halutaan selvittää kokoelman koko esimerkiksi suodatuksen jälkeen.
long count();
Se ei ota parametreja ja palauttaa primitiivisen long-tyypin.
Käytännön esimerkki
Verkkokaupassa täytyy laskea niiden tuotteiden määrä, joilla on yli 20 %:n alennus.
Main.java
123456789101112131415161718192021222324252627282930313233package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Product> products = List.of( new Product("Laptop", 15.0), new Product("Smartphone", 25.0), new Product("Tablet", 30.0) ); long discountedProducts = products.stream() .filter(product -> product.getDiscount() > 20.0) .count(); System.out.println("Number of products with more than 20% discount: " + discountedProducts); } } class Product { private String name; private double discount; public Product(String name, double discount) { this.name = name; this.discount = discount; } public double getDiscount() { return discount; } }
Tässä esimerkissä filter()-metodi valitsee tuotteet, joilla on alennus yli 20 %, ja count() määrittää niiden määrän.
max()-metodi
max()-metodi palauttaa virran suurimman alkion annetun Comparator-vertailijan perusteella. Jos virta on tyhjä, se palauttaa Optional.empty().
Optional<T> max(Comparator<? super T> comparator);
Käytännön esimerkki
Etsi verkkokaupan kallein tuote sen premium-tuotteena mainostamista varten.
Main.java
12345678910111213141516171819202122232425262728293031323334353637383940package com.example; import java.util.List; import java.util.Optional; import java.util.Comparator; public class Main { public static void main(String[] args) { List<Product> products = List.of( new Product("Laptop", 1200.0), new Product("Smartphone", 800.0), new Product("Tablet", 600.0) ); Optional<Product> mostExpensiveProduct = products.stream() .max(Comparator.comparing(Product::getPrice)); mostExpensiveProduct.ifPresent(product -> System.out.println("Most expensive product: " + product.getName() + " - $" + product.getPrice()) ); } } class Product { private String name; private double price; public Product(String name, double price) { this.name = name; this.price = price; } public double getPrice() { return price; } public String getName() { return name; } }
Tässä koodissa Comparator.comparing(Product::getPrice) vertaa tuotteita hinnan perusteella, ja max() valitsee kalleimman tuotteen.
min()-metodi
min()-metodi on samanlainen kuin max(), mutta se palauttaa pienimmän alkion virrasta annetun Comparator-vertailijan perusteella.
Optional<T> min(Comparator<? super T> comparator);
Käytännön esimerkki
Etsi tuote, jolla on alin varastosaldo, arvioidaksesi täydennystarpeen.
Main.java
12345678910111213141516171819202122232425262728293031323334353637383940package com.example; import java.util.List; import java.util.Optional; import java.util.Comparator; public class Main { public static void main(String[] args) { List<Product> products = List.of( new Product("Laptop", 5), new Product("Smartphone", 0), new Product("Tablet", 2) ); Optional<Product> leastStockProduct = products.stream() .min(Comparator.comparing(Product::getStock)); leastStockProduct.ifPresent(product -> System.out.println("Product with the lowest stock: " + product.getName() + " - " + product.getStock() + " units") ); } } class Product { private String name; private int stock; public Product(String name, int stock) { this.name = name; this.stock = stock; } public int getStock() { return stock; } public String getName() { return name; } }
Tämä koodi määrittää tuotteen, jolla on alin varastosaldo, käyttämällä min()-metodia ja Comparator.comparing(Product::getStock).
Kiitos palautteestasi!