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

Mezclar datos.

Estas en el tema de Mezclar datos. en el foro de Java en Foros del Web. Hola comunidad, tengo la siguiente duda. Necesito mezclar datos que se encuentran en dos String separado por un espacio entre valores, por ejemplo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 20/09/2012, 20:17
 
Fecha de Ingreso: junio-2010
Mensajes: 9
Antigüedad: 13 años, 10 meses
Puntos: 0
Pregunta Mezclar datos.

Hola comunidad, tengo la siguiente duda.
Necesito mezclar datos que se encuentran en dos String separado por un espacio entre valores, por ejemplo:
Código JAVA:
Ver original
  1. String dato_a = "1 2 5 7 9 13 15 16 20 23";
  2. String dato_b = "3 4 6 8 10 11 14 18 19 21";
Osea, los datos ya están ordenados.

Puedo separar y convertir cada dato a Integer para analizarlos, pero no me resulta la mezcla
El código que llevo es el siguiente:
Código JAVA:
Ver original
  1. while (stk_a.hasMoreTokens())
  2. {
  3.      dato_a = Integer.parseInt(stk_a.nextToken());
  4.      while(stk_b.hasMoreTokens())
  5.      {
  6.           dato_b = Integer.parseInt(stk_b.nextToken());
  7.           if (dato_a > dato_b)
  8.           {
  9.               System.out.println(String.valueOf(dato_b) +" ");
  10.               i++;
  11.           }
  12.           else if (dato_a < dato_b)
  13.           {
  14.               break;
  15.           }
  16.           if(i%10==0)
  17.              System.out.println("\n");
  18.      }
  19.      System.out.println(String.valueOf(dato_a) +" ");
  20.      i++;
  21.      if(i%10==0)
  22.          System.out.println("\n");
  23. }

No se si me explique bien...
El resultado que debiese mostrar seria mas menos:
Código:
 1 2 3 4 5 6 7 8 9 10 \n 11 13 14 15 16 18 19 20 21 23
Necesariamente necesito que sea con variables Integer, ya que se deben mezclar muuuuchos datos, los mostrados son a modo de ejemplo.
Cada vez, se mezclan datos de a 2 Strings ya ordenados.

Bueno, eso es...
Saludos.
  #2 (permalink)  
Antiguo 20/09/2012, 22:22
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 4 meses
Puntos: 57
Respuesta: Mezclar datos.

Creo que lo mas facil seria que crearas un arreglo de enteros

Código Java:
Ver original
  1. int[] lista = new int[stk_a.countTokens() + stk_b.countTokens()];

Despues recorrer cada lista de numeros e irlos agregando a lista
Por ultimo solamente ordenas la lista de enteros

Código Java:
Ver original
  1. Arrays.sort(lista)
  #3 (permalink)  
Antiguo 21/09/2012, 15:58
 
Fecha de Ingreso: junio-2010
Mensajes: 9
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Mezclar datos.

Ya se había pensado, pero si tengo que mezclar 4GB de datos y estos no caben en mi Memoria Principal porque es de 1GB... Con el arreglo se llenará... Por eso necesito que se mezclen de uno en uno.
La idea básicamente es:
- Leo el primer dato del arreglo X y lo almaceno en una variable.
- Leo el primer dato del arreglo Y y lo almaceno en una variable.
- Comparo las 2 variables y imprimo la menor. (EJ: Si X1 > Y1, entonces, imprimo X1. )
- Dependiendo el dato impreso, avanzo. (En el EJ: Ahora compararé X2 con Y1 e imprimiré el menor de esos.)
- Se itera hasta que se hayan leído los 2 String completos y se hayan comparado.

Lo más importante es que no importa el tiempo que este proceso se demore.
  #4 (permalink)  
Antiguo 21/09/2012, 17:14
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 4 meses
Puntos: 57
Respuesta: Mezclar datos.

Y si vas a mezclar 4 Gb de datos, ¿como es que los pusiste en las variables String la primera vez?
  #5 (permalink)  
Antiguo 21/09/2012, 17:17
 
Fecha de Ingreso: junio-2010
Mensajes: 9
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Mezclar datos.

Es a modo de ejemplo eso que di, no iba a poner los 4GB de datos... está todo en un archivo, que al leerlo almacena un reglón en Strings con las características que puse en la primera pregunta...
Por eso solo puse lo necesario hay que es la operación en si de Mezclar datos.

Etiquetas: mezclar, string
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:59.