import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
class Pizza {
private static final Map
<String, Integer
> quantidadesPorIngrediente
= new HashMap
<>();
private final List<String> ingredientes;
public Pizza() {
ingredientes = new ArrayList<>();
}
private static void contabilizaIngrediente
(String ingrediente
) { quantidadesPorIngrediente.compute(ingrediente, (k, v) -> v == null ? 1 : v + 1);
}
public void adicionaIngrediente
(String ingrediente
) { ingredientes.add(ingrediente);
contabilizaIngrediente(ingrediente);
}
public boolean temIngredientes() {
return !ingredientes.isEmpty();
}
public int getPreco() {
int quantidadeIngredientes = ingredientes.size();
return quantidadeIngredientes <= 2 ? 15 : quantidadeIngredientes <= 5 ? 20 : 23;
}
public static Map
<String, Integer
> getQuantidadesPorIngrediente
() { return quantidadesPorIngrediente;
}
}
class CarrinhoDeCompras {
private final List<Pizza> pizzas;
public CarrinhoDeCompras() {
pizzas = new ArrayList<>();
}
public void adiciona(Pizza p) {
pizzas.add(p);
}
public int getPreco() {
int total = 0;
for (Pizza p : pizzas) {
total += p.getPreco();
}
return total;
}
}
public static void main
(String[] args
) { Pizza marguerita = new Pizza();
marguerita.adicionaIngrediente("Queijo");
marguerita.adicionaIngrediente("Tomate");
marguerita.adicionaIngrediente("Orégano");
Pizza portuguesa = new Pizza();
portuguesa.adicionaIngrediente("Queijo");
portuguesa.adicionaIngrediente("Presunto");
portuguesa.adicionaIngrediente("Ovo");
portuguesa.adicionaIngrediente("Calabresa");
portuguesa.adicionaIngrediente("Cebola");
portuguesa.adicionaIngrediente("Tomate");
Pizza brigadeiro = new Pizza();
brigadeiro.adicionaIngrediente("Brigadeiro derretido");
CarrinhoDeCompras c1 = new CarrinhoDeCompras();
c1.adiciona(marguerita);
c1.adiciona(portuguesa);
c1.adiciona(brigadeiro);
System.
out.
println("Preço do carrinho: " + c1.
getPreco());
for (Map.
Entry<String, Integer
> entry
: Pizza.
getQuantidadesPorIngrediente().
entrySet()) { System.
out.
println("O ingrediente " + entry.
getKey() + " foi usado " + entry.
getValue() + " vezes."); }
}
}