Pues aqui esta mi solución para este ejercicio.
Como siempre, agradezco sujerencias para mejorar el codigo.
Clase ListaCantantesFamosos:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class ListaCantantesFamosos
{
    private ArrayList<CantanteFamoso>listaCantantesFamosos; //declaramos un ArrayList que contiene objetos tipo cantanteFamoso
    private String nombre;//establecemos o declaramos un atributo nombre de la lista
    public ListaCantantesFamosos(String valor_nombre){
        nombre=valor_nombre;
        listaCantantesFamosos=new ArrayList<CantanteFamoso>();//creamos un objeto ArrayList, listaCantantesFamosos, que contiene objetos tipo cantanteFamoso
    }
    public void addCantante(CantanteFamoso valor_nombre){
        listaCantantesFamosos.add(valor_nombre);
    }
    
    public void listar(){
        Iterator<CantanteFamoso>it=listaCantantesFamosos.iterator();//creamos la copia creando un objeto iterator
        CantanteFamoso tmpCantanteFamoso=new CantanteFamoso("","");//creamos el objeto CantanteFamoso temporal para guardar el que saquemos de la lista
        while(it.hasNext()){//devuelve true si el objeto no es el  ultimo de la collección
            tmpCantanteFamoso=it.next();//sacamos de la lista un objeto CantanteFamoso, el metodo next() ha avanzado ya al siguiente elemento...
            System.out.println("Cantante: "+ tmpCantanteFamoso.getCantante());
            System.out.println("Disco mas vendido: "+ tmpCantanteFamoso.getDisco());
        }
    }
    public void introducirNuevoCantante(){
        System.out.println("Por favor, introduzca otro cantante: \nNombre:");
        Scanner sc=new Scanner(System.in);
        String entradaNombre=sc.nextLine();
        System.out.println("Disco:");
        String entradaDisco=sc.nextLine();
        CantanteFamoso newCantante3=new CantanteFamoso(entradaNombre,entradaDisco);
        listaCantantesFamosos.add(newCantante3);
        System.out.println("La lista actualizada contiene los siguientes nombres");
        listar();
    }
    
        
}clase CantanteFamoso:
public class CantanteFamoso
{
    private String nombre;
    private String discoConMasVentas;
    public CantanteFamoso(String valor_nombre, String valor_disco){
        nombre=valor_nombre;
        discoConMasVentas=valor_disco;
    }
    public void setCantante(String valor_nombre){
        nombre=valor_nombre;
    }
    public String getCantante(){
        return nombre;
    }
    public void setDisco(String valor_disco){
        discoConMasVentas=valor_disco;
    }
    public String getDisco(){
        return discoConMasVentas;
    }
}y clase TextListaCantantesFamosos:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class TextListaCantantesFamosos
{
    public static void main(String[]arg){
        ListaCantantesFamosos lista=new ListaCantantesFamosos("lista");//creamos un objeto ArrayList
        CantanteFamoso newCantante1=new CantanteFamoso("Madonna","no se");//creamos un objeto tipo CantanteFamoso
        CantanteFamoso newCantante2=new CantanteFamoso("BonJovi","puede ser..");//creamos un objeto tipo CantanteFamoso
        lista.addCantante(newCantante1);
        lista.addCantante(newCantante2);
        System.out.println("La lista inicial contiene los siguientes nombres");
        lista.listar();
        lista.introducirNuevoCantante();
        boolean aux=true;
        while(aux==true){
            System.out.println("¿Desea introducir otro cantante (S/N)?");
            Scanner sc=new Scanner(System.in);
            String decision=sc.nextLine();
            if(decision.equalsIgnoreCase("S")){
                lista.introducirNuevoCantante();
                aux=true;
            }else{
                aux=false;
            }
        }
    }
}Un saludo.