Llamar siguiente () dos veces en Iterator lanza una excepción NoSuchElementException

Estoy recuperando varios valores de una secuencia, pero necesito hacerlo dos veces para un conjunto separado de valores procedentes de la misma secuencia. Si llamo a uno u otro, todo vuelve a mí correctamente, pero llamando next() dos veces resulta en una NoSuchElementException . Después de leer acerca de esto en línea, he reunido que después de llamar a next() una vez, en cualquier otro momento después de que la llamada de nuevo, básicamente, devolver el iterador falso. ¿Cómo se obtienen dos conjuntos de datos separados de la misma Collection ?

 while (ai.hasNext()) { String ao = ai.next().getImageURL(ImageSize.MEGA); String an= ai.next().getName(); } 

Puede almacenar next () como una variable temporal. Reemplace Objeto en el código siguiente con el tipo de datos que está iterando.

 while(ai.hasNext()){ Object temp = ai.next(); String ao = temp.getImageUrl(ImageSize.MEGA); String an = temp.getName(); 

}

Si no está seguro de que su lista tenga un número par de elementos, sólo tiene que añadir if (ai.hasNext()) antes de su segunda llamada a next() .

 while (ai.hasNext()) { String ao = ai.next().getImageURL(ImageSize.MEGA); if (ai.hasNext())) { String an= ai.next().getName(); ... } } 

Usted se ejecutará en este error cuando su colección tiene un número impar de elementos, usted no debe llamar al next() dos veces sin comprobar allí es algo allí; estás esencialmente rompiendo el punto del while loop haciendo eso.

next() funcionará siempre y cuando haya algo en la colección que se obtenga. Este es un ejemplo de código que funciona perfectamente en JDK1.6.0_23

  Collection<String> aCollection = new ArrayList<String>(); aCollection.add("1"); aCollection.add("2"); Iterator<String> i = aCollection.iterator(); String firstString = null; String secondString = null; while (i.hasNext()) { firstString = (String) i.next(); secondString = (String) i.next(); } System.out.println(firstString); System.out.println(secondString); 

Si agrega otra String a la Collection , terminará con una NoSuchElementException como se ha descrito. Usted necesita tener dos iteradores independientes sobre los mismos datos, o necesita poner otro control dentro de su bucle while para comprobar que todavía hay algo en la colección antes de intentar sacarlo.

  • Conflicto con el paquete Android - Amazon SNS
  • Obtención del valor del sensor de luz
  • Android, onReceive en BroadCastReceiver se llama varias veces
  • Diseño de filas ListView de Android ignorando el relleno
  • Mes en la clase SimpleDateFormat
  • FPS malo en el juego 2D android / java en dispositivos de alta definición
  • R.java no está generando debido a appcompat v7?
  • Equivalente webkit de escritorio de Android addJavascriptInterface ()?
  • ¿Cómo se determina la latencia de audio (AudioTrack) en Android?
  • Encuentra el tono de voz en Android
  • ¿Cómo puedo comprobar si la vista de imagen está vacía o no?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.