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,>
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 unHashMap
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 unHashMap
con los valores{"cc": 1}
. Luego se puede utilizar una función recursiva para agregar los valores alHashMap
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,>