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

no consigo hacer bien la busqueda

Estas en el tema de no consigo hacer bien la busqueda en el foro de Java en Foros del Web. En el siguiente codigo lo que hago es sacar todos los elementos de un archivo y meterlos en un arraylist.Y despues voy recorriendo el arraylist ...
  #1 (permalink)  
Antiguo 22/05/2007, 06:49
 
Fecha de Ingreso: febrero-2007
Mensajes: 172
Antigüedad: 17 años, 2 meses
Puntos: 0
no consigo hacer bien la busqueda

En el siguiente codigo lo que hago es sacar todos los elementos de un archivo y meterlos en un arraylist.Y despues voy recorriendo el arraylist buscando aquellos que pertenecen al mismo grupo(variable p).Estos a su vez los voy metiendo en otro arraylist segun los voy encontrando para una vez los tengo todos,sumar la variable duracion de todos ellos
Cada vez que encuentro uno y lo introduzco en el segundo arraylist lo borro del primero para evitar que vuelva mirarlo,pero no consigo que lo haga.En lugar de eso vuelve a mirarlos todos(como si no los borrara),haciendo un nuevo grupo que si antes habian n elementos pues ahora hay n-1
Alguien me puede decir donde esta el fallo?
ObjectInputStream ois4 = new ObjectInputStream(new FileInputStream("informacion.txt"));
NovaTasca idt;
idt=(NovaTasca) ois4.readObject();
try{
while(idt!=null)
{
D.add(idt);
idt=(NovaTasca) ois4.readObject();
}
}
catch (EOFException e)
{
for(int cont2=0;cont2<D.size();cont2++)
{
int duracion=0;
NovaTasca idt2=(NovaTasca) D.get(cont2);
if(idt2.p!= null)
{
E.add(idt2);
D.remove(cont2);
for(int cont3=cont2+1;cont3<D.size();cont3++)
{
NovaTasca idt3=(NovaTasca) D.get(cont3);
if(idt3.p==idt2.p)
{
E.add(idt3);
D.remove(cont3);
}
}
}
for(int n=0;n<E.size();n++)
{

NovaTasca idt4=(NovaTasca) E.get(n);
int duracion2;
duracion2=(int)(idt4.Final.getTime()-idt4.Inici.getTime());
duracion=duracion+duracion2;
}
Duraciototal(duracion);
}
  #2 (permalink)  
Antiguo 22/05/2007, 08:38
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Re: no consigo hacer bien la busqueda

Wenas

Creo que el error lo tienes en D.remove(cont2); Deberias hacerlo despues del segundo for.

Saludos.
  #3 (permalink)  
Antiguo 22/05/2007, 11:21
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: no consigo hacer bien la busqueda

¿Y no sería más eficiente simplemente meter en la lista sólo los que cumplen la condición y luego sumarlos todos?
  #4 (permalink)  
Antiguo 22/05/2007, 13:47
 
Fecha de Ingreso: febrero-2007
Mensajes: 172
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: no consigo hacer bien la busqueda

Como meter solo los que cumplan la condicion?Leer solo del archivo los que cumplan con la condicion?Es que yo no se que hay en el archivo,no busco algo concreto,si no todo en general
O sea,la variable contiene el nombre del proyecto al que pertenece el elemento.Pongamos que existe Proyecto1 y Proyecto2
Lo que quiero hacer es con el primer for buscar el primer elemento de uno ellos,por ejemplo proyecto1,y despues con el segundo for buscar en el primer arraylist todos los que tengan nombre Proyecto1,meterlos todos en el segundo,borrarlos del primero para que no vuelva a leerlos y una vez estan todos los que se llaman proyecto1 en el segundo arraylist sumarlos.Luego el primer for encontraria el primer elemento del que se llame Proyecto2 y haria lo mismo y asi sucesivamente.

yo pensaba mas que el fallo estaria en D.remove(cont3),porque al encontrar el primer elemento de cada grupo,aunque no lo borre,ya no vuelve a leerlo.El problema son los siguientes al primero,que son los que no deberia volver a leer despues de la primera vuelta no?
  #5 (permalink)  
Antiguo 22/05/2007, 15:19
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: no consigo hacer bien la busqueda

Ah, pense que solo querías leer los de uno. Una opcion sería leer todos e ir creando distintas listas, una por cada parametro, e ir metiendo en cada lista los elementos que corresponden a cada parametro. Despues sumas los elementos de cada lista y punto. Para guardar las lista, un mapa usando como indice el parametro, por ejemplo.

S!
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 11:52.