Buenas.
Tengo que hacer un método donde me dan una lista de listas y tengo que recorrerlo con iteradores la de lista de listas y la sublista que apunta el iterador. El metodo tiene devolver una lista nueva con los números, strings (lo que sea), que no esten repetidos en la lista resultado.
public class Flatten<E> {
public PositionList<E> flatNub(PositionList<PositionList<E>> listOfLists) {
PositionList <E> resultado = new NodePositionList <E> ();
Iterator<PositionList<E>> itFuera = listOfLists.iterator();
while(itFuera.hasNext()){
Iterator <E> itDentro = itFuera.next().iterator();
while(itDentro.hasNext()){
if(member(itDentro.next(), resultado)){
}
}
}
return resultado;
}
public boolean member(E elem, PositionList<E> list) {
Iterator<E> iterador = list.iterator();
boolean encontrado = false;
while (iterador.hasNext()){
if(elem.equals(iterador.next())){
encontrado = true;
}
}
return encontrado;
}
}
Se asume que en las listas no hay elementos null.
Member me devuelve true si el elemento que busco en la lista esta, si no esta me retorna false. !(el método member no puede añadir directamente a la lista resultado)!
Mi duda esta en, al llamar a member el iterador de la sublista se me incrementa al siguiente elemento y si por el caso ese elemento no esta en la lista, no le puedo volver a apuntar porque ya he aumentado el iterador.
Os pongo la explicación de cada método:
flatNub recibe una lista de listas (listOfLists), y devuelve una lista nueva con los elementos, no repetidos, y en orden, que aparecen en las sublistas de listOfLists.
member devuelve true si list contiene un elemento que es igual que elem, y false si no. (el método member no puede añadir directamente a la lista resultado)
Un ejemplo de lo que debe hacer:
flatNub([[1,2],[],[2,3,4],[8,4,]]) = [1,2,3,4,8]
¿Alguna solución?
Gracias.