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

String repetidos.

Estas en el tema de String repetidos. en el foro de Java en Foros del Web. Tengo una aplicación que subo archivos con FileUpload. El caso es que los meto en un array de String, porque necesito comprobar que no esten ...
  #1 (permalink)  
Antiguo 20/01/2009, 10:32
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 352
Antigüedad: 15 años, 7 meses
Puntos: 5
String repetidos.

Tengo una aplicación que subo archivos con FileUpload.
El caso es que los meto en un array de String, porque necesito comprobar que no esten dos repetidos.

Tengo mi array:

String nombreArchivos[] = {"f1,"f2","f3","f4","f5","f6","f7","f8","f9","f10" ,"f11","f12","f13","f14","f15","f16",};

Consta de 16 nombres de los ficheros que voy a guardar en el servidor.

Necesito comprobar de forma ascendente que no esta repetido...

Osea f1 nada.
f2 que no sea igual que f1 y si es poner a f2 valor "" y un msg para indicarlo al usuario.
f3 que no sea igual que f2 ni f1 y si es igual a alguno de los dos igual, poner valor ""....

...y asi hasta f16.

Lo que se me ocurre son unas parrafadas muy muy liosas y largas...

no se si abra algún método y objeto que me ayude o si os acurre algún logaritmo.

Muchas gracias.
  #2 (permalink)  
Antiguo 20/01/2009, 10:54
 
Fecha de Ingreso: enero-2009
Mensajes: 26
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: String repetidos.

Puedes probar con la clase Arrays de Java:

// Búsqueda Binaria
Arrays.binarySearch(nombreArchivos, archivo);

Para realizarla, es necesario contar con un array o vector ordenado.
Arrays.sort(nombreArchivos);
  #3 (permalink)  
Antiguo 20/01/2009, 11:14
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 352
Antigüedad: 15 años, 7 meses
Puntos: 5
Respuesta: String repetidos.

Tengo la estructura de lo que necesito...
package pruebas;

int i=0;
int j=0;
for(i=15;i==0;i--)
{
System.out.println(i);
for(j=i-1;j==0;j--){
System.out.println(i+j);
}
}
}

}

Lo he esquemetizado para que se vea más fácil.
Pero según yo veo, i vale 15, y hasta que valga 0 se va restadando...

¡¡¡ Pero no entra en el for y no pos más que lo miro no veo porqué !!!

Seguro es algo evidente pero no lo veo...
  #4 (permalink)  
Antiguo 20/01/2009, 11:29
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 352
Antigüedad: 15 años, 7 meses
Puntos: 5
Respuesta: String repetidos.

Por algún motivo no vale el == y debe ser >=

int i=0;
int j=0;
for(i=15;i>=0;i--)
{
System.out.println(i);
for(j=(i-1);j>=0;j--){
System.out.println(i+"<>"+j);
}
}
}
}
  #5 (permalink)  
Antiguo 20/01/2009, 11:32
 
Fecha de Ingreso: enero-2009
Mensajes: 26
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: String repetidos.

Cita:
Iniciado por jlgarcia1977 Ver Mensaje
Por algún motivo no vale el == y debe ser >=
for(i=15;i==0;i--)

Asignas 15 a la variable i, por tanto no puede valer 0 :D
  #6 (permalink)  
Antiguo 20/01/2009, 17:07
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 352
Antigüedad: 15 años, 7 meses
Puntos: 5
Respuesta: String repetidos.

v3rn0n lo del medio es una condición...

Vale 15, hasta que se cumpla que i==0, le voy restando 1.

Lo del medio es la condión que cuando se cumple hace que acabe el for.
  #7 (permalink)  
Antiguo 20/01/2009, 17:25
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: String repetidos.

Has entendido el for mal. No es que "cuando se cumpla la condición sale del for". El funcionamiento es que "sale del for cuando deje de cumplirse la condición". Y en tu caso, si le pones como condición "i == 0" claramente esto ya deja de cumplirse desde el principio, así que se sale del bucle.
  #8 (permalink)  
Antiguo 21/01/2009, 03:00
 
Fecha de Ingreso: enero-2009
Mensajes: 26
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: String repetidos.

Cita:
Iniciado por venkman Ver Mensaje
has entendido el for mal. No es que "cuando se cumpla la condición sale del for". El funcionamiento es que "sale del for cuando deje de cumplirse la condición". Y en tu caso, si le pones como condición "i == 0" claramente esto ya deja de cumplirse desde el principio, así que se sale del bucle.
+1
  #9 (permalink)  
Antiguo 21/01/2009, 04:41
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: String repetidos.

Si lo que quieres es comprobar si el nombre está repetido o no, un array no es precisamente la estructura más aconsejable. Lo mejor sería utilizar una Collection que no permita repetidos, por ejemplo un Set, y comprobar si existe ya con ese nombre con un contains(objeto).

Internamente ya implementan los algoritmos de busqueda adecuados etc.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #10 (permalink)  
Antiguo 21/01/2009, 05:33
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 352
Antigüedad: 15 años, 7 meses
Puntos: 5
Respuesta: String repetidos.

Muchas gracias por la aclaración del for, porque estaba equivocado.

GreenEyed va de maravilla con el código que he echo, ya que primero debo meter todos los valores, que no viene ordenados en mi array en el orden que necesitos. Y luego ir recorriendo de más a menos el array buscando repetidos y en su caso borrar en más alto.

Va bien como lo he hecho, de todos modos muchas gracias por vuestro interes.
  #11 (permalink)  
Antiguo 21/01/2009, 05:49
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: String repetidos.

Si ya te funciona estupendo, pero para otra vez ten en cuenta que los Set tambien pueden definirse para que mantegan un orden, un TreeSet por ejemplo, y todo eso que te ahorras de tener que recorrer arrays, ordenar valores etc.

No es que esté "mal" hacerlo, pero teniéndolo hecho y ya probado... es mejor invertir el tiempo en las cosas importantes que no están hechas .
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
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 17:02.