Stream Processing and Pipelines
Shows how to process collections using Java Streams with map, filter, reduce, and collect operations to transform and aggregate data efficiently.
Code
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class StreamProcessing {
record Product(String name, String category, double price) {}
public static void main(String[] args) {
List<Product> products = List.of(
new Product("Laptop", "Electronics", 1200.0),
new Product("Phone", "Electronics", 800.0),
new Product("Desk", "Furniture", 300.0),
new Product("Chair", "Furniture", 150.0)
);
double totalElectronics = products.stream()
.filter(p -> p.category().equals("Electronics"))
.mapToDouble(Product::price)
.sum();
Map<String, List<Product>> byCategory = products.stream()
.collect(Collectors.groupingBy(Product::category));
Map<String, Double> avgPriceByCategory = products.stream()
.collect(Collectors.groupingBy(
Product::category,
Collectors.averagingDouble(Product::price)
));
System.out.println("Total Electronics: $" + totalElectronics);
System.out.println("Grouped: " + byCategory.keySet());
System.out.println("Avg prices: " + avgPriceByCategory);
}
}Report a problem with this exampleOpens a pre-filled issue on GitHub.