Buenas elendur14, por favor lee
https://aprenderaprogramar.com/foros/index.php?topic=1460.0 y sigue las recomendaciones que ahí se dan a la hora de poner título a los temas. Incluye varias palabras clave que correspondan hasta alcanzar el espacio disponible para el título (es importante incluir el nombre del lenguaje y más palabras clave; en este título te ha faltado incluir Java) y pon el código de los ejercicios (por ejemplo CU00667B) al final del título del tema, no al principio.
Algunos comentarios. En el constructor de ListaCantantesFamosos en lugar de listaCantantesFamosos = new ArrayList<>(); deberías haber escrito listaCantantesFamosos = new ArrayList<CantanteFamoso>(); por ser preferible siempre especificar el tipo de objeto que contiene la lista.
La inicialización de Strings por convenio se hace a cadena vacía, no a un espacio en blanco. Es decir, en lugar de
nombreCantante = " ";
discoConMasVentas = " ";
Debe ser (para atenernos al convenio):
nombreCantante = "";
discoConMasVentas = "";
Ten en cuenta que aunque parezca lo mismo, no es lo mismo una cadena vacía (longitud 0) que un espacio en blanco (longitud 1).
Respecto a si es recomendable hacer esto: tempCantante = it.next(); la respuesta es que sí, puedes usarlo siempre que te resulte útil y lo hagas de una forma coherente, como en este caso.
Por otro lado, tu código está muy bien. Lo único que te recomendaría es que como ejercicio pruebes a hacerlo más compacto de la siguiente manera: en la clase con el main, en lugar de crear los dos objetos y luego usar los métodos set, prueba a hacerlo directamente usando el constructor.
Y en el bucle prueba a en lugar de crear el cantante y hacer los set para luego añadir a la lista, hacerlo todo directamente en el lista1.addCantanteFamoso
Finalmente animarte a que nos ayudes a responder en los foros. Revisando ejercicios de compañeros adquirirás destreza en la revisión de código y serás cada vez más rápido en su análisis, aparte de que nos ayudarás.
Salu2