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的方法,由于既然编译经过了,那它必定能够变成可行方法,关键要看你的强大逻辑和神秘直觉。

相关文章
相关标签/搜索