一个LinkedList的奇葩问题

zyczy1314 2013-03-08 03:59:03
我用LinkedList<Log> 存储Log对象,对于要存入的两个对象如:

xinhuanetindex_News|新华网|即时要闻|null|http://www.news.cn/jsyw.htm|网站有成功也有失败,是版面问题
xinhuanetindex_News|新华网|新闻中心|null|http://www.xinhuanet.com/newscenter/index.htm|网站有成功也有失败,是版面问题

存入前是上面那两个,这两个对象是不同的,存入后遍历却出现

xinhuanetindex_News|新华网|新闻中心|null|http://www.xinhuanet.com/newscenter/index.htm|网站有成功也有失败,是版面问题
xinhuanetindex_News|新华网|新闻中心|null|http://www.xinhuanet.com/newscenter/index.htm|网站有成功也有失败,是版面问题

这两个对象变成一样的了,想了半天没想出个所以然?求解
...全文
239 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
MsSnow 2013-03-09
  • 打赏
  • 举报
回复
又是一个实例化的问题!!log对象应该在循环里面new!如不在循环里面new两个log对象都指向同一个地址,值当然也是一样的。
q2012star 2013-03-09
  • 打赏
  • 举报
回复
log.setWebName(jdbc.getWebName(list.get(i).getConfig(),"61.155.9.142")); 这里的i在哪里定义的?循环里面是n啊,代码不全
wangjinlong3768038 2013-03-09
  • 打赏
  • 举报
回复
List<Log> listBoard=LogProperty.getBoard(path,list.get(i).getConfig()); List<Log> list=LogProperty.getParserFailedWeb(path); 楼主你存取的list对象是不是不是同一对象。 还有上面这两句话能解释下么
挖坑让你跳 2013-03-09
  • 打赏
  • 举报
回复
学习学习,怎么这个题,我现在什么都看不懂啊
zyczy1314 2013-03-09
  • 打赏
  • 举报
回复
是的,是实例化问题,对于for循环存储对象必须在循环里new,否则尽管集合里存入了对象,但存入的那些对象都指向for里的最后一个对象,所以遍历出现那种情况
zyczy1314 2013-03-09
  • 打赏
  • 举报
回复
引用 9 楼 wangjinqing3768 的回复:
List<Log> listBoard=LogProperty.getBoard(path,list.get(i).getConfig()); List<Log> list=LogProperty.getParserFailedWeb(path); 楼主你存取的list对象是不是不是同一对象。 还有上面这两句话能解释下么
两个不同方法而已
sweat89 2013-03-08
  • 打赏
  • 举报
回复
其实只有一个log对象,值都设置成最后那个值,即(xinhuanetindex_News|新华网|新闻中心|null|http://www.xinhuanet.com/newscenter/index.htm|网站有成功也有失败,是版面问题;) 然后list里面2个引用都指向这个对象; 不知道我理解的对不对
sweat89 2013-03-08
  • 打赏
  • 举报
回复
for(..;..;){ Log log=new Log(); log.setXX.. log.setXX list3.add(log); }
zyczy1314 2013-03-08
  • 打赏
  • 举报
回复
if(flag==true){ List<Log> listBoard=LogProperty.getBoard(path,list.get(i).getConfig()); for(int n=0;n<listBoard.size();n++){ log.setConfig(listBoard.get(n).getConfig()); log.setBoard(listBoard.get(n).getBoard()); log.setUrl(listBoard.get(n).getUrl()); log.setWebName(jdbc.getWebName(list.get(i).getConfig(),"61.155.9.142")); log.setAnalysis("网站有成功也有失败,是版面问题"); System.out.println(log.toString()+"|"); list3.add(log); } }
上面这个是插入前的代码。 List<Log> list=LogProperty.getParserFailedWeb(path); System.out.println(list.size()); for(int i=0;i<list.size();i++){ System.out.println(list.get(i).toString()); } 上面这个是遍历的代码。
  • 打赏
  • 举报
回复
我觉得还是把代码贴出来吧,这样才好分析,不用猜来猜去
zyczy1314 2013-03-08
  • 打赏
  • 举报
回复
不是啊,我用的for循环插入Log对象,我在for循环里,在它插入之前特意System.out.println()输出了,它们是两个不同对象,可遍历却出现相同的情况。。。
菖蒲老先生 2013-03-08
  • 打赏
  • 举报
回复
应该是代码写的有问题,不小心覆盖了。。。
huage 2013-03-08
  • 打赏
  • 举报
回复
存入的时候是不是Log被后面个覆盖了啊 看看你的代码

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧