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

Buscar elemento en ArrayList

Estas en el tema de Buscar elemento en ArrayList en el foro de Java en Foros del Web. tengo un ArrayList llamado stock, donde guardo en cada elemento una instancia de objeto Producto. mi problema es que necesito recorrer el arreglo para buscar ...
  #1 (permalink)  
Antiguo 04/05/2006, 20:55
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 6 meses
Puntos: 4
Buscar elemento en ArrayList

tengo un ArrayList llamado stock, donde guardo en cada elemento una instancia de objeto Producto.

mi problema es que necesito recorrer el arreglo para buscar un producto, tal que 2 propiedades del objeto Producto, titulo y formato, sean iguales a los pasados al método buscar().

intente hacer esto:

Código:
    
    public int buscar_registro(String titulo, String formato) {
        int i;
        for (i=0;i <= stock.size();i++) {
            Pelicula aux = (Pelicula) stock.get(i);
            System.out.println( aux.titulo );
            if(aux.titulo == titulo && aux.formato == formato) return i;
        }
        // si no se encuentra el elemento en el stock:
        return -1;
    }

y aunque al parecer funciona , lanza unos errores, me imagino porque no se debe asignar a una misma variable una referencia a un objeto y luego asignarle una referencia a otra objeto.

pero si esto es así, no alguna alternativa?
  #2 (permalink)  
Antiguo 04/05/2006, 21:56
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Hola:

¿Puedes poner qué errores te da?

Aunque no es el motivo de los errores, en la comparación es mejor poner aux.titulo.equals(titulo) que el ==.
El == comprueba que aux.titulo y titulo sean el mismo objeto, mientras que equals(), suponiendo que titulo sea un String, comprueba que las cadenas contienen lo mismo.

String hola1 = new String("Hola");
String hola2 = new String("Hola"); // mismo texto

hola1 == hola2 ; // da false, son distintos objetos
hola1.equals(hola2); // son iguales, las dos contienen "Hola".

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 04/05/2006, 22:04
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 10 meses
Puntos: 24
el bucle da una vuelta de mas reemplaza el <= por el <

asi:

for (i=0;i < stock.size();i++) {
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #4 (permalink)  
Antiguo 05/05/2006, 18:55
Avatar de Tipdar  
Fecha de Ingreso: octubre-2005
Ubicación: Aquí y allá.
Mensajes: 323
Antigüedad: 18 años, 6 meses
Puntos: 7
Pienso que titulo es un método... lo llamaría aux.titulo()... lo mismo pasa con formato... aux.formato(), y si es un String... == no serviría... equals...
__________________
El último TipdaR
  #5 (permalink)  
Antiguo 05/05/2006, 22:26
Avatar de Sith_Vader  
Fecha de Ingreso: enero-2005
Mensajes: 43
Antigüedad: 19 años, 4 meses
Puntos: 0
Como ya te han dicho EQUALS es lo que debes usar.
__________________
Que la fuerza esté con nosotros !!! :si:
  #6 (permalink)  
Antiguo 06/05/2006, 15:57
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 6 meses
Puntos: 4
gracias, eran las 2 cosas, el equals y e el ciclo daba una vuelta de más

vale a todos
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 02:52.