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
Código:
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
Código:
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 ");
}