4
respostas

duvida ao usar um HashMap

Estou com duvida em alguma parte do códido


import java.util.HashMap;
import java.util.Map;

public class BalancoEmpresa {

    private Map<String, Divida> dividas = new HashMap<>();

    public void criarDivida(String nome, String cnpj, double valor ) {
        Divida divida = new Divida();  // porque aqui estou dando new Divida?
        divida.setNomeCredor(nome); // esses setNomeCredor está rebendo um nome, esse nome é do parametro passado no metodo criarDivida?
        divida.setCnpjCredor(cnpj); // aqui tambem? o set esta recebendo o valor do paramentro do metodo?
        divida.setValorTotal(valor);
    }
    public void pagarDivida(String cnpj, double valor) {
        Divida divida = dividas.get(cnpj);
        if(divida != null){
            divida.pagar(valor); 
        }
    }
}
4 respostas

Você instância um objeto Divida justamente para criar uma dívida nova e colocar no mapa, por sinal deve ter faltado isso. Os seus outros comentários estão corretos.

Alberto mais que sentido isso? praque criar uma divida? só para adicionar no put? essa parte que nao to perdido

A classe que vc está chama BalancoEmpresa e tem um método criarDivida, ou seja quando vc invoca esse método o objetivo é que uma divida seja criada e que, posteriormente, ela possa ser consultada. Por isso que vc cria e ainda deveria chamar o put.

Nesta caso faltou utilizar o método PUT do HashMap, por isso a divida não será encontrada pela método pagaDivida.

Eu fiz da seguinte forma:

package com.alura.br;

import java.util.HashMap;

public class BalancoEmpresa {

    private HashMap<String, Divida> dividas = new HashMap<String, Divida>();

    public void registraDivida(String nomeCredor, String cpfCredor, double valorDivida){
        dividas.put(cpfCredor, new Divida(nomeCredor, cpfCredor, valorDivida));
    }

    public void pagaDivida(String cpfCredor, double valorPago){
        Divida d = dividas.get(cpfCredor);

        if(d != null){
            d.paga(valorPago);
        }
    }
}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software