21
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / Ejercicio resuelto tipo iterator Java para recorrer objetos ArrayList. CU00667B
« en: 17 de Abril 2015, 21:34 »
Buenas noches a tod@s. A continuación os transcribo el código que he realizado sobre el ejercicio propuesto en la entrega CU00667B de "Java desde cero".
Clase TestListaCantantesFamosos, con el 'main':
Clase ListaCantantesFamosos:
Clase CantantesFamosos:
Clase EntradaDeTeclado:
Gracias por vuestra atención. saludos.
Clase TestListaCantantesFamosos, con el 'main':
Código: [Seleccionar]
public class TestListaCantantesFamosos {
public static void main (String [ ] args) {
String nombreDeLaLista="\"Cantantes famosos y sus discos más vendidos\"";
EntradaDeTeclado entrada;
CantantesFamosos cantante;
System.out.println("Empezamos el programa. Para salir, pulse 'return'");
ListaCantantesFamosos lista=new ListaCantantesFamosos(nombreDeLaLista);
cantante=new CantantesFamosos();
cantante.setNombre("Madonna");
cantante.setDiscoConMasVentas("All I Want Is You");lista.addNombre(cantante);
cantante=new CantantesFamosos();
cantante.setNombre("Jorge Negrete");
cantante.setDiscoConMasVentas("Jalisco");lista.addNombre(cantante);
System.out.println("La lista se llama: "+nombreDeLaLista);
System.out.println("La lista inicial contiene los siguientes datos: ");
lista.listarTodosLosNombres();
do{ //Bucle do-while para ingresar datos en la lista
System.out.println("\nPor favor, introduzca los datos de otro cantante. Para salir, pulse 'Return'");
entrada=new EntradaDeTeclado();
//Si pulsamos 'RETURN' en cualquiera de las dos entradas,
//el objeto 'CantantesFamosos' actual no se añadirá a la lista
if(entrada.getContinuar()) {//1ª Entrada: Introducción del cantante
cantante=new CantantesFamosos();
cantante.setNombre(entrada.getEntrada());
entrada=new EntradaDeTeclado();
if(entrada.getContinuar()) {//2ª Entrada: Introducción del disco
cantante.setDiscoConMasVentas(entrada.getEntrada());
lista.addNombre(cantante);
System.out.println("\nLa lista actualizada contiene los siguientes datos: ");
lista.listarTodosLosNombres(); } } }
while(entrada.getContinuar()); ////Si pulso 'Return', se acabará la introducción de datos
System.out.println("\nLa lista actualizada contiene los siguientes datos: ");
lista.listarTodosLosNombres();
System.out.println("\nFin del programa"); } }
Clase ListaCantantesFamosos:
Código: [Seleccionar]
import java.util.Iterator;
import java.util.ArrayList;
public class ListaCantantesFamosos { //Clase que representa una lista de objetos 'CantantesFamosos' manejada con la clase ArrayList de Java
private String nombreDeLaLista; //Establecemos un atributo nombre de la lista
private ArrayList<CantantesFamosos>listaCantantesFamosos; //Declaramos un ArrayList que contiene objetos 'CantantesFamosos'
public ListaCantantesFamosos(String nombre) {//Constructor
nombreDeLaLista=nombre;
listaCantantesFamosos=new ArrayList<CantantesFamosos>();}
public void addNombre(CantantesFamosos cantante) {listaCantantesFamosos.add(cantante);}
public void listarTodosLosNombres() {
int i=1;
Iterator<CantantesFamosos>it=listaCantantesFamosos.iterator(); //Creamos el objeto it de tipo Iterator con objetos tipo 'CantantesFamosos'
CantantesFamosos cantante;
while(it.hasNext()) {//'True' si el objeto tratado no es el último
cantante= it.next();
System.out.println("Cantante "+i+": "+cantante.getNombre()+" "+"Disco con más Ventas: "+cantante.getDiscoConMasVentas());
i++; } } }
Clase CantantesFamosos:
Código: [Seleccionar]
public class CantantesFamosos{
private String nombre;
private String discoConMasVentas;
public CantantesFamosos() {} //Constructor vacío
public void setNombre(String valorNombre) {nombre=valorNombre;}
public void setDiscoConMasVentas(String valorDiscoConMasVentas) {discoConMasVentas=valorDiscoConMasVentas;}
public String getNombre() {return nombre;}
public String getDiscoConMasVentas() {return discoConMasVentas;} }
Clase EntradaDeTeclado:
Código: [Seleccionar]
import java.util.Scanner;
public class EntradaDeTeclado {
private String entradaTeclado;
boolean continuar=true;
public EntradaDeTeclado() { //Constructor
entradaTeclado="";
pedirEntrada(); } //Al crear un objeto, se ejecuta este método
public void pedirEntrada() {
Scanner entradaEscaner=new Scanner(System.in);
entradaTeclado=entradaEscaner.nextLine();
if (entradaTeclado.length()==0) {continuar=false;} }
//Si pulso 'Return', no se introducirán más datos
public boolean getContinuar() {return continuar;}
public String getEntrada() {return entradaTeclado;} }
Gracias por vuestra atención. saludos.