Map數組初始化與賦值

事情是這樣的數組

我在後臺存放一些示例數據,每一個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的方法,由於既然編譯經過了,那它必定能夠變成可行方法,關鍵要看你的強大邏輯和神祕直覺。

相關文章
相關標籤/搜索