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

Problema con ArrayList

Estas en el tema de Problema con ArrayList en el foro de Java en Foros del Web. Que tal amigos!!! Tengo un formulario simple, y dentro de ese formulario tengo el siguiente codigo, para cuando se carga la ventana: Código: public void ...
  #1 (permalink)  
Antiguo 04/01/2010, 14:34
Avatar de juamd  
Fecha de Ingreso: marzo-2009
Ubicación: Bogotá
Mensajes: 285
Antigüedad: 15 años, 1 mes
Puntos: 8
Problema con ArrayList

Que tal amigos!!!

Tengo un formulario simple, y dentro de ese formulario tengo el siguiente codigo, para cuando se carga la ventana:

Código:
public void listarFormasPago()
    {
        String anno,fechaLimite;
        Calendar calendario = Calendar.getInstance();
        FormaDePago nuevaFormaPago = new FormaDePago();
        
        anno = Integer.toString(calendario.get(Calendar.YEAR));
        fechaLimite = anno+"-"+"05"+"-"+"15";

        listadoFormasPago = nuevaFormaPago.listarFormasPago(fechaLimite);

        for(i=0;i<listadoFormasPago.size();i++){
            this.comboBoxFormaPago.addItem(listadoFormasPago.get(i).getDescripcionFormaPago());
        }
        
    }
Este codigo me llena un JComboBox.

Ahora, despues de llenar unos campos que se piden y presionar el boton "Aceptar" se llama a este codigo:

Código:
private void botonAgregarActionPerformed(java.awt.event.ActionEvent evt) {                                             
        FormaDePago nuevaForma = new FormaDePago();

        nuevaForma = buscarObjetoArray();
        nuevaForma.setValor(Double.parseDouble(this.textFieldValor.getText()));

        if(this.colDescripcionFormasPago.contains(this.comboBoxFormaPago.getSelectedItem())){
            //System.out.println("Esa forma de pago ya existe");
        }else{
            //System.out.println("Esa forma de pago no existe ");
            this.colFormasPago.add(nuevaForma);
            this.colDescripcionFormasPago.add(this.comboBoxFormaPago.getSelectedItem());
        }

        
        System.out.println("Contenido del ArrayList");
        for(i=0;i<this.colFormasPago.size();i++){
                System.out.println("Descripcion :"+this.colFormasPago.get(i).getDescripcionFormaPago()+
                        " Id :"+this.colFormasPago.get(i).getIdFormaPago() + " valor :" +this.colFormasPago.get(i).getValor());

            }
        
    }
No puedo permitir dos formas de pago del mismo tipo en el Array para lo cual verifico antes de ingresar una nueva si existe. El problema que tengo es que a pesar de verificar si la forma de pago ya existe sea como se que haga la verificacion, el objeto existente siempre me toma el valor que le doy al nuevo objeto (al que no se puede agregar). Puede alguien decirme porque pasa esto ?

Gracias.
  #2 (permalink)  
Antiguo 05/01/2010, 03:57
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Problema con ArrayList

Quizás el problema no tenga q ver con el array, sino con lo que estás tomando del combo para comparar.
  #3 (permalink)  
Antiguo 05/01/2010, 20:32
(Desactivado)
 
Fecha de Ingreso: diciembre-2008
Ubicación: por ahi!!!
Mensajes: 113
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Problema con ArrayList

para mi el problema viene por otro lado.

1- cuando decis: No puedo permitir dos formas de pago del mismo tipo en el Array para lo cual verifico antes de ingresar una nueva si existe.
Esto lo podias resolver de varias maneras. La que pensaste le faltan cosas.
Ahora te doy algunas alternativas a seguir.
a- emparchar tu solucion sobrescribiendo equals y hashcode en FormaDePago para que el contains funque, recorda que si no sobreescribis estos usa los de Object.
b- haciendo Abstracta FormaDePago y creando FormaPagoConcreta1 , FormaPagoConcreta2, FormaPagoConcreta3. hacer un List<FormaDePago> si las formas de pago no crecen de manera descomunal.
c- haciendo FormaDePago con un atributo clave y esto en un Set<FormaDePago> y tambien sobreescribiendo equals y hashcode. ahi te aseguras que la lista no va a contener repetidas formas de pago.

debe haber otras mas, espero que se entienda y suerte.
  #4 (permalink)  
Antiguo 06/01/2010, 08:03
Avatar de juamd  
Fecha de Ingreso: marzo-2009
Ubicación: Bogotá
Mensajes: 285
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Problema con ArrayList

Que buenas apreciaciones, no habia visto esas posibilidades.

Saludos.

Etiquetas: arraylist
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:47.