欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

ArrayList add()方法覆盖数据解决办法,arraylistadd

来源: javaer 分享于  点击 20585 次 点评:131

ArrayList add()方法覆盖数据解决办法,arraylistadd


在循环中使用list.add(vo)可能最后只有一个vo,之前的都被覆盖了,原因是vo的对象创建了在循环外面,只有一个对象,所以每次都会被覆盖

		List<Retdata> li = new ArrayList<Retdata>();
    		Retdata data=new Retdata();
    		
    		for (int i = 0; i < retList.size(); i++) {
    			
        		data.setMobile((String) jo11.get("mobile"));
        		data.setSendcontent((String) jo11.get("sendcontent"));
        		data.setSendDate((String) jo11.get("SendDate"));
        		li.add(data);
        		
    		}

0
{SendDate=2017/6/7, sendcontent=111, mobile=123456789}
1
{SendDate=2017/6/8, sendcontent=22, mobile=22222222}
2
{SendDate=2017/6/7, sendcontent=33, mobile=3333333333}
0
com.format.Retdata@26807f
1
com.format.Retdata@26807f
2
com.format.Retdata@26807f

可以看到上面list中的对象都是同一个内存地址。

解决方法:将对象在循环中创建

    		List<Retdata> li = new ArrayList<Retdata>();
    	
    		for (int i = 0; i < retList.size(); i++) {
    			Retdata data=new Retdata();
    			
        		data.setMobile((String) jo11.get("mobile"));
        		data.setSendcontent((String) jo11.get("sendcontent"));
        		data.setSendDate((String) jo11.get("SendDate"));
        		li.add(data);
        		
    		}


相关文章

    暂无相关文章

用户点评