遍歷 carInfoLists,以 modleName 為 Key 分組到 Map,原代碼在遍歷 Map 時直接 put 新 Key 導致異常。
for (String key : maps.keySet()) {
if (key.equals(modelName)) {
maps.get(key).add(car);
} else {
maps.put(modelName, newList); // ❌ 遍歷中修改結構
}
}
Map> maps = new HashMap<>();
for (CarModle car : carInfoLists) {
maps.computeIfAbsent(car.getModleName(), k -> new ArrayList<>()).add(car);
}
Map> maps = new HashMap<>();
for (CarModle car : carInfoLists) {
String key = car.getModleName();
List list = maps.get(key);
if (list == null) {
list = new ArrayList<>();
maps.put(key, list);
}
list.add(car);
}
lists.clear() 會清空**同一個 List 物件**,導致已放入 Map 的舊分組資料也被清空(因為所有 Key 共用同一個 lists 變數)。new ArrayList() 並 put,但遍歷中修改 Map 會拋異常。computeIfAbsent / merge 等原子操作簡化代碼。