事情是這樣的數組
我在後臺存放一些示例數據,每一個map都手動賦值再存到mapList裏,隨着數據量的增多,代碼中出現了一串一串的超類似代碼。map.put()因爲要放不一樣的值也就算了,map初始化和mapList.add()真是難以容忍。指針
因而想到用map數組的方法。編譯器
Map<String,String>[] mapArray=new Map[n]; 編譯
mapArray[i].put();後臺
這樣是能夠編譯經過的,但是運行時卻出現了空指針異常。泛型
緣由是泛型具備類型的不肯定性,而數組的定義必須肯定其元素類型,因此泛型數組在初始化時會面臨類型擦除的問題。List
也就是對於編譯器來講HashMap<Integer,Integer>和HashMap<String,String>是相同的。初始化並無完成,因此出現了空指針異常。map
那該如何辦嘞?上網去查,原來你們都知道緣由啊,可是沒有人給出解決辦法,什麼不支持、沒法編譯、沒法轉化,什麼這樣不對要用mapList。哼!方法
還好我靈機一動,沒有初始化,那就給它初始化被。數據
for(int i = 0; i < n; i++){
mapArray[i] = new HashMap<String,String>();
}
這樣再進行賦值就沒有問題了。
若是你仍須要List類型
List<Map<String,String>> mapList= Arrays.asList(mapArray);
我之因此沒有還原成List方法而是仍然找Array的方法,由於既然編譯經過了,那它必定能夠變成可行方法,關鍵要看你的強大邏輯和神祕直覺。