本人上周在pc端与手机端做对接接口的时候包装json格式的数据犯了一个很低级的小错误,由此可见程序猿小白对集合的深层底层原理还是理解的不够透彻,希望做出此文章可以对初学者做一个警醒,做出一个小的帮助。
是这样的,手机端需要一个json格式包装的数据,大概是这个样子:
{
"listItemGzjy": [
{
"zw": "实习生 ",
"gzms": "负责资料整理;图纸绘制; 参与烟草援建黑龙江省勃利县九龙水源工程初步设计资料整理,并编制汇报系统。",
"end_year_month": ""
},
{
"zw": "实习生",
"gzms": "负责专家资料库整理;协助领导及同事召开项目汇报会; 参与水利部作业指导书的修改工作,针对各司局作业指导书中出现的问题进行归纳整理,汇总成为修改意见。",
"end_year_month": ""
}
],
"zwpj": "一名性格开朗,值得信赖的女生。我最大的优点是执行力强,有正能量,对于领导交代的事物能够短时间内做出回馈,并保质保量的完成。工作期间我能全心全意投入工作中,工作之余也能认真思考工作中的问题,提高自己的能力。另外,我的沟通协调能力较强,我认为工作中没有沟通解决不了的事情,在工作中我能够很好的与领导及各部门沟通协调,确保工作顺利开展。\n",
"phone": "15210725087",
"xtm": "6d76aab4a43e412abbaa7ddf3d771589",
"zgxl": "硕士",
"dd": "北京、深圳",
"zy": "水文与水资源工程",
"zzmm": "中共党员(含预备党员)"
}
而我的代码片段片段则是以下的样子:
问题就出现在了,循环拿到的数据都可以存入到returnToMapList集合中,但是当map集合一放入到listItemqq集合中的时候就会循环遍历最后一条数据,拿到的所有几条数据都是最后一条重复的数据。当时自己很是郁闷,不知道是咋回事,当时只是以为每一个循环分辨不出每次插入的是哪个集合,想着对每一次循环的map做一个数字标记,但是此法定然是行不通的。又尝试使用其他的集合里面的方法去进行添加,但最后也是不能实现。后来经人指点,才发现犯了一个很低级的小错误。
我在循环外面new了一个map,而集合的底层只会开辟一个内存空间,每次循环的数据只是会往这一个空间不断的添加,所以我需要在每一个for循环了new集合,每循环一次数据开辟一次,才会达到最后的预期效果。如下代码片:
问题解决,一个很小的小白错误,但是由此却对集合底层又多了一点深入的了解。