Autor Tema: Java implementar un iterador para una clase métodos hasNext next remove CU00919C  (Leído 2726 veces)

Luis Fdo Carvajal

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 37
    • Ver Perfil
Buenos días, presento el ejercicio  CU00919C del tutorial de programación Java avanzado

Código: [Seleccionar]
package animal;

/**
 *
 * @author itco1724
 */
public class Animal implements Comparable<Animal>{

    private String especie;
    private String nombre;
    private double peso;
    private int numeroDePatas;
    private int numero;
   
 
public Animal (String especie, String nombre, double peso, int numeroDePatas, int numero){
   
    this.especie = especie;
    this.nombre = nombre;
    this.peso = peso;
    this.numeroDePatas = numeroDePatas;
    this. numero = numero;
    }

     @Override
    public String toString() {
         return " Especie: "+ especie+ " Nombre: "+ nombre + " : " +" Numero de Patas: "+numeroDePatas+" Numero en la Lista: " + numero + "\n";}
   
//Cuando se trate de realizar una ordenación “natural”, esta se hará por orden alfabético de nombres.
    @Override
     public int compareTo(Animal o) {
         return this.nombre.compareTo(o.nombre);}
     
    public String getEspecie() {return especie;}
    public String getNombre() {return nombre;}
    public double getPeso (){return peso;}
    public int getnumeroDePatas() {return numeroDePatas;}
    public int getnumero (){return numero;}
   
}//Cierre de la clase

Código: [Seleccionar]
package animal;
import java.util.ArrayList;
import java.util.Iterator;

/**
 *
 * @author itco1724
 */
public class ListaDeAnimales {
   
    private ArrayList<Animal> listaanimales = null;  // Campo de la clase
    public ListaDeAnimales() {listaanimales = new ArrayList<Animal>();}  // Constructor de la clase
    public ArrayList<Animal> getListaDeAnimales(){return listaanimales;} //Omitimos otros métodos
    public Iterator<Animal> iterator() {return new MiIteradorListaDeAnimales();} // Método de la clase

    //sobreescrito el método toString
    @Override
    public String toString() {return listaanimales.toString();}  // Método de la clase

   
    // Clase interna
    protected class MiIteradorListaDeAnimales implements Iterator<Animal> {
     
        public int posicion = 0;    public boolean sepuedeeliminar = false;  // Campos

        @Override
        public boolean hasNext() {return posicion < listaanimales.size();}  // Método

        @Override
        public Animal next() {  // Método

            Animal res = listaanimales.get(posicion); // Creamos un objeto Persona igual al que recorremos
            posicion ++;
            sepuedeeliminar = true;
            return res;}

        @Override

        public void remove() {
            if (sepuedeeliminar) {
                listaanimales.remove(posicion-1);
                posicion--;
                sepuedeeliminar = false; }
        } // Cierre del método remove
    } // Cierre de la clase interna          


Código: [Seleccionar]
package animal;

import java.util.Iterator;
import java.util.Scanner;

/**
 *
 * @author itco1724
 */
public class TestPrograma {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       
        ListaDeAnimales cp = new ListaDeAnimales();
             Iterator<Animal> it;
              Animal e; // Este objeto lo usaremos para almacenar temporalmente objetos Animales
             cp.getListaDeAnimales().add(new Animal("pantera","Penelope",98.55,4,1));
             cp.getListaDeAnimales().add(new Animal(" loro amazónico","Juanito",3.67,2,2));
             cp.getListaDeAnimales().add(new Animal("perro grandanés","Artur",38.77,4,3));
             cp.getListaDeAnimales().add(new Animal("mono de tanzania","Monk",55.32 ,2,4));
             
             System.out.println("Los animales en la lista son:: "+cp.toString());
             //recorrer la lista
             it = cp.iterator();
             
             System.out.println ("¿Qué número desea eliminar?:");
             String entrada="";
                Scanner x = new Scanner (System.in); //Creación de un objeto Scanner
                entrada = x.nextLine ();
                //Convertir un string en entero
                int numEntero = Integer.parseInt(entrada);

            while (it.hasNext() ) {
                 e = it.next();
                 int enumEntero = 0;
           
                 if (e.getnumero()== numEntero) {it.remove(); } //  it.remove() elimina la selección de la colección
             }
             System.out.println("Lista después de recorrer/eliminar: " + cp.toString() );
       } 
 }

Saludos
« Última modificación: 20 de Junio 2017, 19:04 por Alex Rodríguez »

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".