1 回答

TA貢獻1817條經驗 獲得超6個贊
在這種情況下,有兩個相互運行的 for 循環,即 n*n 循環。我們可以在另一個 for 循環內刪除一個 for 循環,并在外部運行第二個 for 循環,其中包含僅包含外部映射的每個鍵的對象。List<object>[]
private Map<Long, Map<String, List<String>>> objectListToMap(List<Object[]> list) {
List<Object[]> objList = new ArrayList<>();
Map<Long, Map<String, List<String>>> hmap = new LinkedHashMap<>();
Map<Long, List<Object[]>> tempmap = new LinkedHashMap<>();
for (Object[] object : list) {
if (!hmap.containsKey(Long.parseLong(object[0].toString()))) {
hmap.put(Long.parseLong(object[0].toString()), new HashMap<String, List<String>>());
tempmap.put(Long.parseLong(object[0].toString()), objList);
}
tempmap.get(Long.parseLong(object[0].toString())).add(object);
}
for (Map.Entry<Long, List<Object[]>> entry : tempmap.entrySet()) {
Map<String, List<String>> innerMap = new LinkedHashMap<>();
for (Object[] obj : entry.getValue()) {
if (!innerMap.containsKey(obj[1].toString())) {
innerMap.put(obj[1].toString(), new ArrayList<String>());
}
innerMap.get(obj[1].toString()).add(obj[2].toString());
}
hmap.get(entry.getKey()).putAll(innerMap);
}
return hmap;
}
添加回答
舉報