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.

JavaData Fetching

Code

snippet
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);
    }
}