Когда я запрашиваю свою базу данных, она возвращает мне List<Object[]>
, где object[]
содержит Parent, Child и GrandChild.Я хочу построить карту этого дерева отношений как Map<Parent, Map<Child, List<GrandChild>>>
.Я хочу знать самый быстрый способ построения этих отношений.
Я могу сделать это, разбив свой запрос к БД на несколько запросов, таких как первое построение Map<Parent, List<Child>>
, а затем использовать каждый из List<Child>
для получения списка внуков, однакоэта опция будет экспоненциально увеличивать количество раз, когда мне нужно запрашивать БД, если число элементов велико или использовать приведенный ниже код для преобразования списка в карту.
private Map<Long, Map<String, List<String>>> objectListToMap(List<Object[]> list) {
Map<Long, Map<String, List<String>>> hmap = new HashMap<>();
for (Object[] object : list) {
Map<String, List<String>> innerMap = new HashMap<>();
if (!hmap.containsKey(Long.parseLong(object[0].toString()))) {
hmap.put(Long.parseLong(object[0].toString()), innerMap);
}
for (Object[] object1 : list) {
if (Long.valueOf(object[0].toString()).equals(Long.valueOf(object1[0].toString()))) {
if (!innerMap.containsKey(object1[1].toString())) {
innerMap.put(object1[1].toString(), new ArrayList<String>());
}
innerMap.get(object1[1].toString()).add(object1[2].toString());
}
}
hmap.get(Long.valueOf(object[0].toString())).putAll(innerMap);
}
return hmap;
}
Пожалуйста, дайте мне знать, как я могу уменьшитьвремя обработки.