1
resposta

[Dúvida] Fiz diferente, perde muito em desempenho ?

void ajusteDePrecos (Map<String, double> inventarioProdutos, String produto, double novoPreco) {
  for(String item in inventarioProdutos.keys) {
    if(item == produto){
        inventarioProdutos[item] = novoPreco; 
    }
  }
  
  for (String item in inventarioProdutos.keys) {
    print('${item} - ${inventarioProdutos[item]}');
  }
}
1 resposta

Olá, Victor, como vai?

A sua solução funciona corretamente para o que a atividade propõe e demonstra um bom entendimento sobre iteração em mapas no Dart. A lógica aplicada está consistente, o valor é atualizado conforme o nome do produto recebido e o inventário é exibido ao final, atendendo ao objetivo do exercício.

Em termos de desempenho, a única observação técnica é que você percorre o mapa duas vezes, uma para atualizar o preço e outra para exibir os dados. Para um inventário pequeno, como no exemplo, isso não traz impacto relevante. Em cenários maiores, o acesso direto pela chave do mapa é mais eficiente, já que o Map permite busca direta sem necessidade de percorrer todas as chaves.

Um exemplo de abordagem alternativa seria verificar se o produto existe usando inventarioProdutos.containsKey(produto) e, em caso positivo, atualizar diretamente inventarioProdutos[produto] = novoPreco. A impressão do inventário pode continuar da mesma forma, mantendo a clareza do código.

Obrigado por compartilhar sua solução e continue trazendo suas variações e dúvidas para o fórum, ele está à disposição.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!