Bom dia, estou com o seguinte problema estou fazendo esse exercício, mas na hora de usar o metodo buscaPorNome sempre me retorna null, não sei dizer se eu que não entendi exatamente como fazer a busca, mas segui o que o exercício orienta.
6(opcional) No Banco, crie um método Conta buscaPorNome(String nome) que procura por uma Conta
cujo nome seja equals ao nome dado.
Você pode implementar essemétodo comum for na sua lista de Conta, porém não tem uma performance
eciente.
Adicionando um atributo privado do tipo Map<String, Conta> terá um impacto signicativo. Toda vez
que ométodo adiciona(Conta c) for invocado, você deve invocar .put(c.getNome(), c) no seumapa.
Dessa maneira, quando alguém invocar o método Conta buscaPorNome(String nome), basta você fazer
o get no seu mapa, passando nome como argumento!
Note, apenas, que isso é só um exercício! Dessa forma você não poderá ter dois clientes com o mesmo
nome nesse banco, o que sabemos que não é legal.
Como caria sua classe Banco com esse Map?
Classe TesteBanco.
import java.util.LinkedList;
public class TestaBanco {
public static void main(String[] args) {
Banco banco = new Banco();
banco.setConta(new LinkedList<Conta>());
Conta c = new ContaCorrente();
banco.adiciona(c);
c.setNome("João");
c.deposita(1500);
Conta c1 = new ContaCorrente();
banco.adiciona(c1);
c1.setNome("João");
c1.deposita(2800);
System.out.println(banco.buscaPorNome("João"));
Classe Banco.
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Banco {
private List<Conta> conta;
private int numDeContas;
private Map<String, Conta> mapaDeContas = new HashMap<String, Conta>();
public void adiciona(Conta c) {
conta.add(c);
mapaDeContas.put(c.getNome(), c);
numDeContas++;
}
public Conta pegaConta(int x) {
return conta.get(x);
}
public List<Conta> getConta() {
return conta;
}
public void setConta(List<Conta> conta) {
this.conta = conta;
}
public int pegaTotalContas() {
return this.numDeContas;
}
public Conta buscaPorNome(String nome) {
return mapaDeContas.get(nome);
}
}