Sum in Lambda Expression in Java 8


package pmk.learnjava8withrealapps.lambda;

public class Product {

	private String id;
	private String name;
	private long price;
	private int quantity;
	private String manufacturer;

	public String getManufacturer() {
		return manufacturer;
	}

	public void setManufacturer(String manufacturer) {
		this.manufacturer = manufacturer;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public long getPrice() {
		return price;
	}

	public void setPrice(long price) {
		this.price = price;
	}

	public int getQuantity() {
		return quantity;
	}

	public void setQuantity(int quantity) {
		this.quantity = quantity;
	}

	public Product(String id, String name, long price, int quantity, String manufacturer) {
		this.id = id;
		this.name = name;
		this.price = price;
		this.quantity = quantity;
		this.manufacturer = manufacturer;
	}

	public Product() {
	}

	@Override
	public String toString() {
		return "Id: " + this.id + "\nName: " + this.name + "\nPrice: " + this.price + "\nQuantity: " + this.quantity + "\nManufacturer: " + this.manufacturer;
	}

}




package pmk.learnjava8withrealapps.lambda;

import java.util.ArrayList;
import java.util.List;

public class Demo {

	public static void main(String[] args) {

		List products = new ArrayList();
		products.add(new Product("p1", "mobile 1", 1000, 2, "Manufacturer 1"));
		products.add(new Product("p2", "mobile 2", 700, 4, "Manufacturer 1"));
		products.add(new Product("p3", "laptop 1", 1200, 6, "Manufacturer 2"));
		products.add(new Product("p4", "laptop 2", 7000, 9, "Manufacturer 2"));
		products.add(new Product("p5", "laptop 3", 2300, 7, "Manufacturer 2"));

		int s1 = products.stream()
				.mapToInt(p -> p.getQuantity())
				.sum();
		System.out.println("Sum all quantities: " + s1);

		int s2 = products.stream()
				.filter(p -> p.getName().startsWith("mobile"))
				.mapToInt(p -> p.getQuantity())
				.sum();
		System.out.println("Sum quantities of mobile starts with mobile: " + s2);

		long s3 = products.stream()
				.mapToLong(p -> p.getQuantity() * p.getPrice())
				.sum();
		System.out.println("Total: " + s3);

	}
}
Sum all quantities: 28
Sum quantities of mobile starts with mobile: 6
Total: 91100