[Ayuda]Iterator con saltos

Iniciado por d!lan, 8 Abril 2014, 00:10 AM

0 Miembros y 1 Visitante están viendo este tema.

d!lan

Saludos a la comunidad

bueno lo que sucede es que debo implementar un iterator por saltos, ya tengo una implementacion pero me dicen que asi no lo haga
ejemplo: si el numero de saltos es 2 entonces se visitaran los nodos en los indices
0,2,4,6,8..... si fuera 3 entonces 0,3,6,9........ y asi sucesivamente


package ufps.util;
import java.util.Iterator;
/**
*
*
*
*/
public class IteratorSaltos<T> implements Iterator<T>
{

private NodoD<T> cab, posicion;
       private int num=0;

       /**
        * Constructor con parametros de la clase
        * @param cab es de tipo Nodo<T> que contiene el nodo cabeza de la lista
        */
IteratorSaltos(NodoD<T> cab,int num) {
           this.cab=cab;
           this.posicion=this.cab.getSig();
           this.num=num;
           
}
       
       /**
        * remueve un dato de la lista
        */
       @Override
       public void remove()
       {}

       /**
        * Método que informa si existe otro elemento en la lista para seguir iterando
        * @return un tipo boolean que informa si existe o no un dato en la lista, desde la posición
        * actual del cursor.
        */
       @Override
public boolean hasNext() {
           
return (this.posicion!=this.cab);
               
}

       /**
        * Método que retorna un dato de la posición actual del cursor del iterador.
        * El cursor queda en la siguiente posición.
        * @return un tipo T que contiene el dato actual
        */
       @Override
public T next()
    {
        T dato = null;
if (this.hasNext()) {
            int con = 0;
            NodoD<T> aux = this.posicion;
           for (; aux != this.cab; aux = aux.getSig()) {
                if (con == this.num) {
                    break;
                }
                con++;
            }
          if (aux != this.cab)
           {
                dato = this.posicion.getInfo();
                this.posicion = aux;
                if(this.posicion.getSig()==this.cab)
                {
                      this.posicion=this.cab;
                }
                return dato;
            }
    throw new RuntimeException("No alcanzan los nodos para dar el salto   ");
}
throw new RuntimeException("No hay mas elementos ");
    }
//fin de la clase
}


Me dicen que debo cambiar ciclo y quitar break y la excepcion
for (; aux != this.cab; aux = aux.getSig()) {
                if (con == this.num) {
                    break;
                }
                con++;
            }

quitar esta excepcion:
throw new RuntimeException("No alcanzan los nodos para dar el salto ");
}

alguien me podria explicar otra forma de hacerlo :s