Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Beregning af Stream-Statistik med count(), max() og min() | Terminale Operationer i Stream API'et
Stream API

bookBeregning 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 beregningerstreamelementer.

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

Main.java

copy
123456789101112131415161718192021222324252627282930313233
package 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

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637383940
package 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

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637383940
package 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).

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 8

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

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

bookBeregning 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 beregningerstreamelementer.

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

Main.java

copy
123456789101112131415161718192021222324252627282930313233
package 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

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637383940
package 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

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637383940
package 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).

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 8
some-alt