Hola, solo dos detalles de poca importancia:
1- En el código, mejor evitar siempre usar la letra ñ, así como otros caracteres que
sean ajenos al alfabeto inglés.
public int getTamaño () { return listaDeCantantes.size(); }
Esto es porque, aunque a nosotros nos funcione, puede haber problemas al compartir nuestro código con otros programadores de otros países cuyos sistemas operativos y programas de edición no contengan una tabla de caracteres que reconozca símbolos latinos como la ñ, las vocales con tilde, vocales con diéresis, las aperturas de interrogación y exclamación(anglosajones solo usan los cierres), etc...
Como digo, es una recomendación, no una obligación. Fastidia un poco, porque entonces hay que escribir "mal" estos nombres.
Se puede usar simplemente la letra n:
public int getTamano () { return listaDeCantantes.size(); }
Pero hay otras formas que se usan habitualmente: tamanio, tamanyo, tamanho,...
Sobre todo vamos a querer usarlas cuando la palabra es "año", porque si solo usamos la n..., emmm.., pues no es elegante
2- Otra recomendación, no obligación.
Si un else va a quedar vacío, pues simplemente no se pone ningún else y ya está.
Si lo creemos necesario, podemos añadir el comentario explicando que en caso de no cumplirse la condición anterior entonces no va a ocurrir nada.
Pero no es necesario incluir un else vacío.
public void removeCantante (int posicion) { //Método
if (posicion >= 0 && posicion < listaDeCantantes.size() ) {
listaDeCantantes.remove(posicion); }
else { } //else vacío. No existe nombre para la posición solicitada, no se ejecuta ninguna instrucción
}