package com.lokesh.lambda.exercise; import com.lokesh.lambda.Product; import com.lokesh.lambda.ProductData; import java.math.BigDecimal; import java.util.List; import java.util.stream.Collectors; public class LambdaExample4 { public static void main(String[] args) { List<Product> products = ProductData.getProducts(); // List<Product> cheapProducts = products.stream(); BigDecimal priceLimit = new BigDecimal("6"); int numberOfCheapProducts = 0; // Check if there are cheap products for ( Product product : products) { if (product.getPrice().compareTo(priceLimit) < 0) { numberOfCheapProducts++; } } //using lambda expression // Because local variables are effectively final, you cannot modify them inside a lambda expression. // products.forEach(product -> { // if (product.getPrice().compareTo(priceLimit) < 0) { // numberOfCheapProducts++;// Error: Variable must be effectively final // } // }); System.out.println("There are " + numberOfCheapProducts + " cheap products"); } }