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

obtener valor iterador java

Estas en el tema de obtener valor iterador java en el foro de Java en Foros del Web. Estoy implementando un iterador para recorrer un arrayList. Pero no se como hacer para que me devuelve un valor numerico que tengo almacenado en vez ...
  #1 (permalink)  
Antiguo 15/07/2010, 08:28
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
obtener valor iterador java

Estoy implementando un iterador para recorrer un arrayList. Pero no se como hacer para que me devuelve un valor numerico que tengo almacenado en vez de un objeto:

Código:
import java.util.ArrayList;
import java.util.Iterator;

public class iterador 
 { 
 
public static void main(String args[]) {}
  


public iterador (){
  
  ArrayList<Integer> endPoints =  new ArrayList<Integer>();  
  int ePoints = 0;
  
if(!endPoints.contains(5)) // avpid duplicates
{
  endPoints.add(5); // capture the end points for new edges
  ePoints++;
};


// get the vertex for Edge.
     Iterator theEndPoints = endPoints.iterator();
     while (theEndPoints.hasNext())     
     { 
      if ( theEndPoints.next() != 3 )
       {
        System.out.println(theEndPoints.next());
       }
     }
}   
}
Lo que necesito evaluar es esto: if ( theEndPoints.next() != 3 )
  #2 (permalink)  
Antiguo 15/07/2010, 09:20
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: obtener valor iterador java

Tienes dos fallos, Iterator por defecto guarda Objetos, no Integers, o haces un cast al sacar o usas <Integer> para meter.

El otro fallo es que cada vez que haces un .next() avanzas una posición, por lo que una vez que detecta un número distinto de 3, trata de mostrar el siguiente número, no el distinto de 3, pero tu array sólo tiene un valor así que te sales del array.
  #3 (permalink)  
Antiguo 15/07/2010, 09:27
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: obtener valor iterador java

Gracias por la explicación. No me habría dado cuenta de lo de .next

En cuanto a hacer un cast, todavía no puedo compilar porque me dice "inconvertible type":

Cita:
...

ePoint = 0; // esto es para evitar repetidos

Iterator theEndPoints = endPoints.iterator();
while (theEndPoints.hasNext())
{
int iPoint = (int) theEndPoints.next();

if ( iPoint != newMeshEdges.vertex && ePoint == 0 )
{
ePoint = iPoint;
}
}
  #4 (permalink)  
Antiguo 15/07/2010, 09:57
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: obtener valor iterador java

No puedes hacer un cast de Object a int (no es un objeto, es una primitiva), pero a Integer sí puedes, y además funciona como primitiva. De todas formas, es mucho más cómodo usar <Integer> como hiciste en los Array, de otra forma, cada vez que recuperes un objeto de Iterator tendrás que hacer un cast.
  #5 (permalink)  
Antiguo 15/07/2010, 10:16
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: obtener valor iterador java

Ah! Si. Funciona perfecto:
Cita:
Iterator <Integer> theEndPoints = endPoints.iterator();
En tanto esperaba respuesta hice una iteración con for. En esta caso estoy chequeando una lista de solo cuatro valores. En general conviene usar iterator mas que que un bucle for?

Cita:
for (int s = 0; s < endPoints.size(); ++s)
{

if ( !nextEdgesList.contains( endPoints.get(s) ) )
{
ePoint = endPoints.get(s);
}
}
  #6 (permalink)  
Antiguo 15/07/2010, 10:33
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: obtener valor iterador java

Personalmente, casi no uso ese tipo de bucles for.

Si sé que voy a recorrer el array entero utilizo el

for (Clase1 elemento : ArraydeClase1) {


}

Si estoy buscando un elemento en concreto en un List, Map o Set, utilizo sus métodos de búsqueda, y si es hasta que se cumpla una condición un bucle while.

Por lo que tengo entendido, objetos relacionado con arrays (heredan de Collection) implementan ya iterator. Por lo que la razón para utilizar iterator para recorrerlos, sería que en un futuro fueras a remodelar el programa y existiesen nuevos objetos de tipo lista que quisieras utilizar, de esta forma y gracias al polimorfismo tendrías que modificar menos código.
  #7 (permalink)  
Antiguo 15/07/2010, 13:48
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: obtener valor iterador java

En este caso mas que hablar de array por aquí y por allí, lo conveniente es hablar de List. Por que lo que hace que tenga un iterator es que es una List. Lo de que la implementación en concreto sea ArrayList es "irrelevante".

Y los arrays no heredan de Collection. ArrayList sí, pero los "array" en minúsculas no.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.

Etiquetas: iterador
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 22:17.