Fusionar cadenas de una lista de matriz basada en ciertos elementos CÓMO

Me gustaría realizar una función en una lista de datos en un archivo de texto, pero no estoy seguro de cómo hacerlo. Mi comprensión de cómo manipular matrices y cadenas es débil, por eso estoy haciendo este proyecto.

Mi archivo de texto se ve así:

0, 0. 50 0.5 66;
1, 0. 69 2. 70;
2, 0.5 48 0.5 71;
3, 1. 47 1. 75;
4, 2. 52 1. 74;
5, 2. 71 1. 80;
6, 3. 65 1. 61;
7, 4. 62 1. 68;

Estoy buscando un resultado como este:

0, 0. 50 0.5 66 0. 69 2. 70;
1, 0.5 48 0.5 71;
2, 1. 47 1. 75;
3, 2. 52 1. 74 2. 71 1. 80;
4, 3. 65 1. 61;
5, 4. 62 1. 68;

Los segundos elementos de las dos primeras entradas son iguales (0.) y me gustaría combinar estas entradas en la misma línea. Lo mismo para las líneas 4 y 5.

Según tengo entendido, debo leer mi archivo en una lista de matrices, pero no sé cómo consultar la lista de matrices para encontrar todas las entradas que tienen el mismo valor para el segundo elemento y luego fusionar toda la entrada con otra entrada.

No tengo ningún código para mostrar porque no sé por dónde empezar.

Agradezco cualquier aporte.

preguntado el 16 de mayo de 11 a las 20:05

¿Podría mostrarnos el resultado esperado del ejemplo dado? -

¿Qué significa "fusionar" dos filas? -

Edité para incluir el resultado esperado. -

¿Están siempre ordenadas las segundas columnas (los datos después de la coma)? -

2 Respuestas

No usaría una lista, usaría un mapa. Un mapa tiene un método

put(key, value)

Entonces, si está interesado en la segunda columna de una línea determinada, haría algo como (pseudocódigo)

Map<String, String> lookup = new HashMap<String, String>();

for (...) {  // loop over the lines in the file

    String key = getSecondFieldFromLine(line); // implement this
    String val = lookup.get(key);


    if (val != null ) {
        merge(val, line);  // implement this according to whatever merge means
    }

    lookup.put(key, val);
}

Es posible que tenga que modificar esto (por ejemplo, almacenar el resultado de la combinación para colocarlo en la búsqueda), lo que está haciendo aquí es aprovechar el hecho de que para un mapa, las operaciones de colocación y obtención son realmente rápidas (un HashMap usa el código hash método que está en cada objeto). Por lo tanto, puede determinar fácilmente si ya tiene una línea con el campo que está buscando, ya que usa el campo de interés como clave para buscar el campo similar en el que se encuentra.

contestado el 17 de mayo de 11 a las 00:05

Analizaría la entrada en una lista de listas (o matriz de matrices o cualquier colección que prefiera). Implementaría un comparador que se compara en función del segundo elemento de una lista. Entonces puedes ordena tu lista principal or matriz. Finalmente, puede iterar a través de su lista de listas, combinando listas adyacentes usando cualquier lógica combinatoria, produciendo una nueva lista como resultado.

Por otro lado, si su entrada siempre se ordenará como muestra, entonces puede omitir la implementación del comparador y la clasificación por completo y simplemente iterar a través de su colección realizando las combinaciones

contestado el 17 de mayo de 11 a las 00:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.