Beregning af Stream-Statistik med count(), max() og min()
I programmering har man ofte brug for at tælle antallet af elementer i en samling eller finde minimums- og maksimumsværdier blandt dem.
Dog skriver programmører som regel ikke egne algoritmer til disse opgaver, da der allerede findes indbyggede metoder. Stream API'et tilbyder praktiske metoder til at arbejde med samlinger, hvilket muliggør beregninger på streamelementer.
Blandt disse metoder findes count(), max() og min(), som hjælper med at bestemme antallet af elementer samt finde de største og mindste værdier.
Metoden count()
Metoden count() returnerer antallet af elementer i en stream. Den bruges ofte, når du skal bestemme størrelsen på en samling efter filtrering af data.
long count();
Den tager ingen parametre og returnerer en primitiv long type.
Praktisk eksempel
I en onlinebutik skal du tælle antallet af produkter med en rabat på over 20%.
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; } }
I dette eksempel vælger filter()-metoden produkter med en rabat større end 20%, og count() bestemmer deres antal.
max()-metoden
Metoden max() returnerer det maksimale element i en stream baseret på en angivet Comparator. Hvis streamen er tom, returnerer den Optional.empty().
Optional<T> max(Comparator<? super T> comparator);
Praktisk eksempel
Find det dyreste produkt i en onlinebutik for at promovere det som et premiumprodukt.
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; } }
I denne kode sammenligner Comparator.comparing(Product::getPrice) produkter efter pris, og max() vælger det dyreste.
Metoden min()
Metoden min() ligner max(), men returnerer det mindste element i en stream baseret på en given Comparator.
Optional<T> min(Comparator<? super T> comparator);
Praktisk eksempel
Find produktet med lavest lagerbeholdning for at vurdere behovet for genopfyldning.
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; } }
Denne kode identificerer produktet med lavest lagerbeholdning ved hjælp af min()-metoden og Comparator.comparing(Product::getStock).
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Can you show me code examples for these methods?
What is the difference between count(), max(), and min() in terms of their return types?
How do I use these methods with custom objects like Product?
Awesome!
Completion rate improved to 2.33
Beregning af Stream-Statistik med count(), max() og min()
Stryg for at vise menuen
I programmering har man ofte brug for at tælle antallet af elementer i en samling eller finde minimums- og maksimumsværdier blandt dem.
Dog skriver programmører som regel ikke egne algoritmer til disse opgaver, da der allerede findes indbyggede metoder. Stream API'et tilbyder praktiske metoder til at arbejde med samlinger, hvilket muliggør beregninger på streamelementer.
Blandt disse metoder findes count(), max() og min(), som hjælper med at bestemme antallet af elementer samt finde de største og mindste værdier.
Metoden count()
Metoden count() returnerer antallet af elementer i en stream. Den bruges ofte, når du skal bestemme størrelsen på en samling efter filtrering af data.
long count();
Den tager ingen parametre og returnerer en primitiv long type.
Praktisk eksempel
I en onlinebutik skal du tælle antallet af produkter med en rabat på over 20%.
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; } }
I dette eksempel vælger filter()-metoden produkter med en rabat større end 20%, og count() bestemmer deres antal.
max()-metoden
Metoden max() returnerer det maksimale element i en stream baseret på en angivet Comparator. Hvis streamen er tom, returnerer den Optional.empty().
Optional<T> max(Comparator<? super T> comparator);
Praktisk eksempel
Find det dyreste produkt i en onlinebutik for at promovere det som et premiumprodukt.
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; } }
I denne kode sammenligner Comparator.comparing(Product::getPrice) produkter efter pris, og max() vælger det dyreste.
Metoden min()
Metoden min() ligner max(), men returnerer det mindste element i en stream baseret på en given Comparator.
Optional<T> min(Comparator<? super T> comparator);
Praktisk eksempel
Find produktet med lavest lagerbeholdning for at vurdere behovet for genopfyldning.
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; } }
Denne kode identificerer produktet med lavest lagerbeholdning ved hjælp af min()-metoden og Comparator.comparing(Product::getStock).
Tak for dine kommentarer!