Wracam do tego wątku, gdyż mam problem z przekonwertowaniem powyższego kodu na Jave.
Poniżej mój kod i zaznaczone, gdzie mam problem.
Czy da się tego python'a zmienić na javę - proszę o pomoc.
import java.util.*;
public class HelloTest {
public static void main(String []args){
var list = new HashMap<String, Object>();
list.put("company.name", "IBM");
list.put("company.tag.0.name", "computer");
list.put("company.tag.1.name", "cpu");
list.put("company.address.country", "USA");
list.put("company.category.0", "aaa");
list.put("company.category.1", "bbb");
var result = convertPathsToHashMap(list);
}
public HashMap<String, Object> convertPathsToHashMap(Map<String, Object> input) {
var result = new HashMap<String, Object>();
input.forEach((path, value) -> {
var current = result;
var allComponents = new ArrayList<>(Arrays.asList(path.split("\\.")));
allComponents.remove(allComponents.size() - 1);
var i = 0;
for (var component : allComponents) {
if (component.matches("\\d+")) {
Integer index = Integer.valueOf(component);
if (current.size() <= index) {
current.put(component, new HashMap<>());
}
current = current.put(component, current.get(index)); // << tu jest problem z typem
} else {
if (current.get(component) == null) {
if (allComponents.size() > i + 1 && allComponents.get(i + 1).matches("\\d+")) {
current.put(component, new ArrayList<>());
} else {
current.put(component, new HashMap<>());
}
current = current.get(component); // << tu jest problem z typem
}
}
var lastElement = allComponents.get(allComponents.size() - 1);
if (component.matches("\\d+")) {
current.put(component, value);
} else {
current.put(lastElement, value);
}
i++;
}
});
return result;
}
}
Edit:
Naprawdę, nikt nie pomoże?
Jestem wdzięczny Shalom za rozwiązanie, bo chociaż nakierował jak to mniej więcej ma być, ale..., pisząc w kategorii Java oczekiwałem pomocy właśnie w tym języku.
To jest tak jakbym na forum tłumaczeń prosił o pomoc w przetłumaczeniu 3 zdań w języku hiszpańskim, a otrzymał w języku francuskim....
Później próbował przetłumaczyć na podstawie francuskiego na hiszpański, ale brakuje mi paru wyrazów/wskazówek, żeby to było poprawne.