Foros del Web » Programación para mayores de 30 ;) » Java »

Iterator con saltos

Estas en el tema de Iterator con saltos en el foro de Java en Foros del Web. Saludos a la comunidad bueno lo que sucede es que debo implementar un iterator por saltos en una lista Circula Doblemente enlazada, ya tengo una ...
  #1 (permalink)  
Antiguo 07/04/2014, 16:13
 
Fecha de Ingreso: septiembre-2013
Mensajes: 57
Antigüedad: 11 años, 1 mes
Puntos: 0
Iterator con saltos

Saludos a la comunidad

bueno lo que sucede es que debo implementar un iterator por saltos en una lista Circula Doblemente enlazada, 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;
/**
 * Clase para el manejo de Iteradores en una Lista Circular Doble Enlazada<T> con nodo cabecera
 * @author Marco Adarme
 * @version 2.0
 */
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 ");	
}
alguien me podria explicar otra forma de hacerlo :s

Etiquetas: clase, iterator, saltos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:10.