Quando fui apresentado ao desafio, principalmente na parte de "printar" no terminal os itens com seus valores, eu pensei logo em HashMap. Venho estudando algoritmos e estruturas de dados e me pareceu mais intuitivo o uso dessa estrutura de dado.
Criei duas classes para esse projeto, "Account" e "Cart". Um seria o saldo e o outro o carrinho, onde ficam guardados os produtos e os valores. Uma das funções da classe do carrinho é "printCart":
public void printCart() {
TreeMap<String, Integer> sortedHashMap = new TreeMap<>();
sortedHashMap.putAll(cart);
System.out.println("---------------------------");
for (String item : sortedHashMap.keySet()){
System.out.println("Item: " + item + ". Value: " + sortedHashMap.get(item));
}
System.out.println("---------------------------");
}
Como o HashMap não é naturalmente ordenado, tive de transformar ele em um TreeMap, que automaticamente ordena os itens pelo nome (chave, key), deixando a lista em ordem alfabética. Acredito que o HashMap seja uma estrutura de dado ideal para trabalhar com produtos, uma vez que seu tempo de pesquisa é de O(1), muito rápido para a maioria das ações envolvendo compra, pesquisa, etc.