1 回答

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊
在這種情況下,有兩個(gè)相互運(yùn)行的 for 循環(huán),即 n*n 循環(huán)。我們可以在另一個(gè) for 循環(huán)內(nèi)刪除一個(gè) for 循環(huán),并在外部運(yùn)行第二個(gè) for 循環(huán),其中包含僅包含外部映射的每個(gè)鍵的對(duì)象。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;
}
添加回答
舉報(bào)