Retorno de dados de um Map

Estou tentando imprimir os dados contidos em um Map e não estou conseguindo.
Estou aprendendo Java agora.

package testemap;

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

public class TesteMap {

public static void main(String[] args) {
    Cliente c1 = new Cliente("070.972.388-10", "José João");
    Cliente c2 = new Cliente("090.629.509.12", "Paulo Moura");
    Cliente c3 = new Cliente("301.420.556-88", "Vagner Silva");

    Map<Integer, Cliente> ht = new HashMap<>();

    ht.put(1, c1);
    ht.put(2, c2);
    ht.put(3, c3);


    for (int i = 1; i <= ht.size(); i++) {
        System.out.println(ht.get(i));


    }

}

}

Isso e facil amigo, tente fazer assim !

for (java.util.Map.Entry<String, Cliente> h : ht.entrySet()) {
      System.out.println(h.getKey());
      System.out.println(h.getValue());
}

Tem mais de uma forma de você fazer isso.
Exemplo:

    Map<Integer, String> map = new HashMap<>();
	
	map.put(1 , "Valor 1");
	map.put(2 , "Valor 2" );
	map.put(3 , "Valor 3");
	map.put(4 , "Valor 4");
	
	// 1
	map.forEach((k, v) -> System.out.printf("%d - %s%n", k , v));
    //map.forEach((key, value) -> {
	//	System.out.println(key);
	//	System.out.println(value);
	//});

	// 2
	for (Map.Entry<Integer, String> entry : map.entrySet()) {
		System.out.printf("%d - %s%n", entry.getKey() , entry.getValue());
	}

Essa linha só vai imprimir o toString() dos objetos da classe Cliente.

Se quer imprimir detalhes, faça assim:

for (int i = 1; i <= ht.size(); i++) {
    Cliente cliente = ht.get(i);
    System.out.println(cliente.getNome());
    System.out.println(cliente.getCPF());
}

Muito obrigado