Não consigo acessar o nome da conta na segunda hashmap

No meu main eu tenho

 Map<Integer, Agencias> Agencias;
 Agencias = new HashMap<>();

[…Pilhas de código…]

E na classe Agencias há

public class Agencias<Integer, Object> {
String nomeAgencia;
private Map<Integer, Contas> contas = new HashMap<>();
public Agencias(String nomeAgencia, Map<Integer, Contas> contas) {
    this.nomeAgencia = nomeAgencia;
    this.contas = contas;
}

[…Pilhas de código…]

E criei um método para printar o nome das contas mas não consigo acessar eles, apenas a localização dos objetos na memória.

    public void ver(Map<Integer, Agencias> Agencias) {
    Scanner sc = new Scanner(System.in);
    System.out.println("De qual agencia você deseja visualizar as contas?");
    int id = sc.nextInt();
    System.out.println("--------------------------");
    Agencias.get(id).getContas().keySet().forEach((key) -> {
        System.out.println(key + " --- Nome:" + Agencias.get(id).getContas().get(0));
    });
    System.out.println("--------------------------");
    new Main().menuContas(Agencias);
    }

Só consigo fazer até o get(x), não consigo acessar o nome da conta.
Minha saida é isso: 0 — Nome:[Dados.Contas@6d311334]
Alguém tem uma ideia de como contornar isso?

Dá uma olhada aqui no ponto 13.4 sobre o metodo toString. Se nao entender algo fala

Consegui resolver, na verdade foi falha minha :stuck_out_tongue: passei o parâmetro de forma errônea…
Eu estava passando

Map<Integer, Agencias> Agencias;

como parâmetro, mas na verdade era pra ser:

Map<Integer, Agencias<Integer, Contas>> Agencias;

mesmo assim valeu, estou pegando varios livros para ler sobre poo, se tiver algum livro mais atual que possa me passar… gostei muito das funções lambda