Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package br.com.alura.casadocodigo.models; import java.util.LinkedHashMap; import java.util.Map; import java.util.Objects; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import org.springframework.web.context.WebApplicationContext; /** * * @author Michel A. Medeiros */ @Component @Scope(value = WebApplicationContext.SCOPE_SESSION) public class CarrinhoCompras { private final Map<CarrinhoItem, Integer> itens = new LinkedHashMap<>(); public void add(CarrinhoItem item) { itens.put(item, getQuantidade(item) + 1); } private int getQuantidade(CarrinhoItem item) { if (!itens.containsKey(item)) { itens.put(item, 0); } return itens.get(item); } public int getQuantidade() { return itens.values().stream().reduce(0, (proximo, accumulator) -> proximo + accumulator); } @Override public int hashCode() { int hash = 5; hash = 13 * hash + Objects.hashCode(this.itens); return hash; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final CarrinhoCompras other = (CarrinhoCompras) obj; if (!Objects.equals(this.itens, other.itens)) { return false; } return true; } }