Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida no Ex. 15 da Aula 5 - Collections framework

Como o próprio enunciado disse, se utilizarmos um Map para buscar por nome, não poderá ter dois clientes com o mesmo nome nesse banco.

Sendo assim qual outra maneira de fazermos essa busca por nome utilizando apenas o ArrayList?

`package br.com.alura.banco.model;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Banco {
    private List<Conta> contas = new ArrayList<>();
    private Map<String, Conta> mapa = new HashMap<>();

    public void adicionaConta(Conta c) {
        contas.add(c);
        mapa.put(c.getTitular(), c);
    }

    public Conta getConta(int x) {
        return contas.get(x);
    }

    public int getQuantidadeDeContas() {
        return contas.size();
    }

    public Conta getContaPorNome(String nome) {
        return mapa.get(nome);
    }

    public Conta getContaPorNomeUsandoFor(String nome) {
        for (Conta c : contas) {
            if (c.getTitular().equals(nome)) {
                return ???;
            }
        }
    }
}
1 resposta
solução!

Teu último método aí (getContaPorNomeUsandoFor), onde tu esboçaste uma solução via for-each, está quase completo. O que falta:

  1. Tu retornares a conta que "casa" com a condição disposta no if; ou seja, return c (no lugar das interrogações).
  2. Após o laço for, declara return null, para o caso de o nome que tu passaste ao método não "casar" com nenhum da lista.

Uma última coisa: essa busca puramente por nome vai te retornar a primeira ocorrência na lista. Se tu tiveres duas contas com o mesmo nome, apenas a que estiver indexada primeiro te será retornada.