Java - Método Next de un Iterador

 
Vista:
sin imagen de perfil

Método Next de un Iterador

Publicado por Pablo (1 intervención) el 23/10/2016 01:20:06
Muy buenas, tengo un problema con un código al hacer un iterador de números enteros.
Me dan una lista de números enteros (positivos y negativos) y tengo que devolver una nueva lista solo con los números positivos. El método next tiene que devolverme solo los números positivos y saltarse los negativos.
Ejemplo (1 2 -3 4) tiene que salir (1 2 4). Este es el código que tengo pero me da nullpointerException. Alguna solución?

1
2
3
4
5
6
7
8
9
10
11
12
public Integer next() throws NoSuchElementException{
 
	if(cursor==null || list.isEmpty()){
		throw new NoSuchElementException();
	}else{
		Integer sol=cursor.element(); //guardo en sol el elemento del cursor y luego avanzo el cursor
		do {
			cursor=list.next(cursor); //primero avanzo el cursor una vez
		}while(cursor.element()==null && cursor.element()<=0); // busco el positivo, si no lo es lo sigo avnzndo
		return sol; // devuelvo el número que tenía el cursor al principio.
	}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Método Next de un Iterador

Publicado por Tom (1632 intervenciones) el 23/10/2016 11:37:58
Probablemente te está fallando cursor=list.next(cursor);

¿ Has pensado en hacerlo con streams ? :
1
2
3
4
5
6
7
8
9
10
11
/* */
public static void main(String args[]) {
	List<Integer> origen = Arrays.asList(1, -2, 3, -4, 5, -6);
	List<Integer> nueva = origen.stream().filter(n -> n >= 0).collect(toList());
 
	System.out.print("{ ");
	for(Integer i : nueva) {
		System.out.printf("%d, ", i);
	}
	System.out.println("}");
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar