Oi Alisson,
Lembrando alguns conceitos.
Um HashMap, é um Mapa. Por isso, tem chave e valor.
Para adicionarmos um valor no mapa, devemos passar também a chave para este valor específico.
Para pegarmos um valor do mapa, só precisamos informar a chave e ele retornará o valor para nós.
Exemplo:
"Alisson" -> Conta 1234
"Lucas" -> Conta 5678
Legal, agora vamos lá:
private Map<String, Conta> indexadoPorNome = new HashMap<>();
Aqui criamos uma instancia de HashMap, este é um mapa que recebe uma String como chave, e uma Conta como valor.
Quanto ao método adiciona():
public void adiciona(Conta c){
contas.add(c);
indexadoPorNome.put(c.getCliente().getNome(), c); //adicionando no mapa, metodo put()
}
na linha que você perguntou, chamamos o método put() do mapa. Que adiciona um Nome do Cliente como chave e a Conta dele como valor. Para facilitar a leitura do código, poderíamos escrever assim:
String nomeDoCliente = c.getCliente().getNome();
indexadoPorNome.put(nomeDoCliente, c);
Quanto ao método buscarPorNome()
public Conta buscarPorNome(String nome){
return indexadoPorNome.get(nome);
}
Queremos retornar uma Conta informando apenas o nome do cliente. Para isso, usamos o método get()
passando o nome do cliente por parâmetro.
Exemplo: indexadoPorNome.get("Lucas"), retorna Conta 5678.