Java - Método next() de la interfaz iterator en una lista de pares en Java

 
Vista:

Método next() de la interfaz iterator en una lista de pares en Java

Publicado por Ricardo (2 intervenciones) el 19/10/2019 17:18:17
Estoy implementando el método next() en una lista de pares, Pair Un ejemplo sería [Pair("hola",1),Pair(1,9)]

Necesito completar el metodo next() para que tambien me devuelva la parte Integer

Tengo el método avanzaCursor()

1
2
3
4
5
private void avanzaCursor() {
      while(cursor != null && (cursor.element().getLeft() == null || cursor.element().getRight()<= 0)) {
          cursor = list.next(cursor);
          }
      }

Y aquí tengo el método next()
1
2
3
4
5
6
7
8
9
10
public E next() throws NoSuchElementException {
      if (cursor == null) {
            throw new NoSuchElementException();
        }
      E elem = cursor.element().getLeft();
      cursor = list.next(cursor);
      avanzaCursor();
      return elem;
 
  }
Y mi cuestión es que no consigo resolver que el next me de la parte Integer, pues solo me da la parte de E, ¿Cómo podría hacerlo,gracias?
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
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Método next() de la interfaz iterator en una lista de pares en Java

Publicado por Rodrigo (623 intervenciones) el 21/10/2019 17:41:37
Conviene que incluyas mas codigo, como esta definida la clase que contiene esos metodos.
Por que quieres obtener un int y no E?
Como estas USANDO la clase? Puedes mostrar como has definido un objeto de esa clase?
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

Método next() de la interfaz iterator en una lista de pares en Java

Publicado por Ricardo (2 intervenciones) el 21/10/2019 19:27:25
La clase de la lista de pares es Pair<E,Integer>

Tengo la variable contador que se inicializa a la parte Integer
1
int contador;

Actualmente tengo este método next()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public E next() throws NoSuchElementException {
	  if (cursor == null) {
			throw new NoSuchElementException();
		}
 
	  contador = cursor.element().getRight();
	  E elemento = cursor.element().getLeft();
	  while(contador >= 1) {
	  if(contador< 1) {
		  elemento = list.next(cursor).element().getLeft();
		  contador = list.next(cursor).element().getRight();
 
	  }
	  else {
		  avanzaCursor();
	  }
 
	  contador--;
 
	  }
	  return elemento;
 
  }

Pero no me pasa este tipo de pruebas
1
2
3
4
5
6
7
8
9
10
new NodePositionList([Pair(3,2),Pair(4,4)]
new ConjuntoIterator<Integer>(positionlist_0) => iterator_1
iterator_1.next() => 3
iterator_1.hasNext() => true
iterator_1.next() => 3
iterator_1.next() => 3
the call to iterator_1.next() returned
3
but should have returned
4
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
Imágen de perfil de pablo
Val: 626
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Método next() de la interfaz iterator en una lista de pares en Java

Publicado por pablo (238 intervenciones) el 21/10/2019 20:58:56
Buenas Ricardo fijate en esta parte del código

1
2
3
4
5
6
7
8
9
while(contador >= 1) {
	  if(contador< 1) {
		  elemento = list.next(cursor).element().getLeft();
		  contador = list.next(cursor).element().getRight();
 
	  }
	  else {
		  avanzaCursor();
	  }

no sé que debe hacer el código que esta dentro del if pero esa operación nunca sera true y ademas si le asignas un 0 nunca entrara al while entonces replantea la lógica de ese if por que así no te servirá
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