Hola lobo
Tu ejercicio es una maravilla.
1º Un main que llama a otra clase para presentar el menú y gestionarlo y lo único que hace es preguntar si queremos volver al menú. OK
2º Un menú completo con inserciones de elementos al final y en medio, búsqueda y eliminación de elementos. OK
Y tal como dices:
tiene un código limpio y una interface intuitiva y amigable.
Aunque estás empezando en java, se nota tu bagaje en programación, y no tienes problemas en encontrar y usar métodos apropiados. Ejem.:
lista.add(nombre);
lista.add(i, nombre);
En fin, tu código está perfecto. Solo quiero comentarte un detalle.
Has creado el método
public int getSize(){//Método tipo función (getter) que devuelve el tamaño de la lista funcional al 100%, un método de tipo función.
Pero quiero recordarte que los métodos que contienen el prefijo 'get', son métodos que devuelven atributos de la clase.
Este método podría confundir y hacer creer que existe un atributo de nombre 'size' en esta clase.
¿Solución? Cambiar el nombre por 'miSize', 'totalSize', etc. Excluyendo siempre el get inicial.
En cuanto a tu propuesta de ejercicio, me gusta. Hablamos.
Saludos