es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Convertir una lista de cadenas con separador de punto en un Map

Buscando una solución hermosa en Java que sea útil para mí. Gracias de antemano por cualquier consejo.
Hay una lista de cadenas con separadores de coma:

"a.b.cc"
"a.dd"
"a.b.f.gg"
"u.ww"

y tengo valores para los últimos elementos de cada fila

cc -> 1, dd -> 5, gg -> 8, ww ->60

Y como resultado debería tener un Map<string, object="">

Este resultado se puede describir en formato JSON: { "a": { "b": { "cc": 1, "f": { "gg": 8 } }, "dd": 5 }, "u": 60 }
La tarea es convertir las cadenas con separadores en un mapa con valores predefinidos.</string,>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Se puede utilizar el método String.split() para dividir las cadenas en una matriz de cadenas. Luego se puede utilizar un bucle para iterar a través de la matriz y crear un HashMap con los valores.

    Por ejemplo, para la cadena "a.b.cc", se puede dividir en una matriz ["a", "b", "cc"] y luego utilizar un bucle para crear un HashMap con los valores {"cc": 1}. Luego se puede utilizar una función recursiva para agregar los valores al HashMap para las otras cadenas.

    Aquí hay un ejemplo del código:
    “`java
    public static Map<string, object=””> convertToMap(String[] strings, Map<string, object=””> map) {
    for (String s : strings) {
    String[] parts = s.split(“\.”);
    if (parts.length == 1) {
    map.put(parts[0], getValue(parts[0]));
    } else {
    Map<string, object=””> subMap = new HashMap<>();
    map.put(parts[0], convertToMap(Arrays.copyOfRange(parts, 1, parts.length), subMap));
    }
    }
    return map;
    }

    public static Object getValue(String s) {
    switch (s) {
    case “cc”:
    return 1;
    case “dd”:
    return 5;
    case “gg”:
    return 8;
    case “ww”:
    return 60;
    default:
    return null;
    }
    }
    “`</string,></string,></string,>

Comments are closed.