Beräkning av Strömstatistik med Count(), Max() och Min()
Inom programmering behöver du ofta räkna antalet element i en samling eller hitta det minsta och största värdet bland dem.
Dock skriver programmerare vanligtvis inte egna algoritmer för dessa uppgifter eftersom det redan finns inbyggda metoder. Stream API tillhandahåller bekväma metoder för att arbeta med samlingar, vilket möjliggör beräkningar på strömelement.
Bland dessa metoder finns count(), max() och min(), som hjälper till att fastställa antalet element samt hitta det största och minsta värdet.
Metoden count()
Metoden count() returnerar antalet element i en ström. Den används ofta när du behöver fastställa storleken på en samling efter att ha filtrerat data.
long count();
Den tar inga parametrar och returnerar en primitiv long-typ.
Praktiskt exempel
I en webbutik behöver du räkna antalet produkter med en rabatt på mer än 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 detta exempel väljer metoden filter() produkter med en rabatt större än 20%, och count() fastställer deras antal.
Metoden max()
Metoden max() returnerar det största elementet i en stream baserat på en angiven Comparator. Om streamen är tom returneras Optional.empty().
Optional<T> max(Comparator<? super T> comparator);
Praktiskt exempel
Hitta den dyraste produkten i en webbutik för att marknadsföra den som en 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 denna kod jämför Comparator.comparing(Product::getPrice) produkter efter pris, och max() väljer den dyraste.
Metoden min()
Metoden min() liknar max(), men returnerar det minsta elementet i en stream baserat på en angiven Comparator.
Optional<T> min(Comparator<? super T> comparator);
Praktiskt exempel
Hitta produkten med lägst lagersaldo för att bedöma behovet av påfyllning.
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; } }
Denna kod identifierar produkten med lägsta lagersaldo med hjälp av min() metoden och Comparator.comparing(Product::getStock).
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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
Beräkning av Strömstatistik med Count(), Max() och Min()
Svep för att visa menyn
Inom programmering behöver du ofta räkna antalet element i en samling eller hitta det minsta och största värdet bland dem.
Dock skriver programmerare vanligtvis inte egna algoritmer för dessa uppgifter eftersom det redan finns inbyggda metoder. Stream API tillhandahåller bekväma metoder för att arbeta med samlingar, vilket möjliggör beräkningar på strömelement.
Bland dessa metoder finns count(), max() och min(), som hjälper till att fastställa antalet element samt hitta det största och minsta värdet.
Metoden count()
Metoden count() returnerar antalet element i en ström. Den används ofta när du behöver fastställa storleken på en samling efter att ha filtrerat data.
long count();
Den tar inga parametrar och returnerar en primitiv long-typ.
Praktiskt exempel
I en webbutik behöver du räkna antalet produkter med en rabatt på mer än 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 detta exempel väljer metoden filter() produkter med en rabatt större än 20%, och count() fastställer deras antal.
Metoden max()
Metoden max() returnerar det största elementet i en stream baserat på en angiven Comparator. Om streamen är tom returneras Optional.empty().
Optional<T> max(Comparator<? super T> comparator);
Praktiskt exempel
Hitta den dyraste produkten i en webbutik för att marknadsföra den som en 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 denna kod jämför Comparator.comparing(Product::getPrice) produkter efter pris, och max() väljer den dyraste.
Metoden min()
Metoden min() liknar max(), men returnerar det minsta elementet i en stream baserat på en angiven Comparator.
Optional<T> min(Comparator<? super T> comparator);
Praktiskt exempel
Hitta produkten med lägst lagersaldo för att bedöma behovet av påfyllning.
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; } }
Denna kod identifierar produkten med lägsta lagersaldo med hjälp av min() metoden och Comparator.comparing(Product::getStock).
Tack för dina kommentarer!