首页 > 其他 > 详细

List迭代循环时出现分问题

时间:2014-03-17 07:31:05      阅读:465      评论:0      收藏:0      [点我收藏+]

一个List,通过迭代之后给List中的实体重新赋值,代码如下

bubuko.com,布布扣
 1 public List getListByPage(Page currPage) { 
 2         Map recordTypeMap = BusnDataDir.recordTypeMap; 
 3         List infoList = currPage.getQueryResult(); 
 4         List<CollectNewsGroup> info = new ArrayList<CollectNewsGroup>(); 
 5         Iterator itr = infoList.iterator(); 
 6         while (itr.hasNext()){ 
 7             CollectNewsGroup news = new CollectNewsGroup(); 
 8             
 9             news =     (CollectNewsGroup) itr.next(); 
10             
11             String userId = news.getUser(); 
12             String recordType = news.getRecordType(); 
13             
14             SysUser sysUser = (SysUser) operInfoDAO.getObject(SysUser.class, userId); 
15             String userName = sysUser.getUsername(); 
16             
17             
18             
19             String recordTypeName = (String) recordTypeMap.get(recordType); 
20             news.setUser(userName); 
21             news.setRecordType(recordTypeName); 
22             
23             info.add(news); 
24             
25         } 
26         
27         return info; 
28     }
bubuko.com,布布扣

 

可是,当第一次循环之后,infoList 中的别的实体的值也变了,因为是二次开发,参照以前的代码实现,Debug以前的程序是没有问题的,所以百思不得其解,今天早上又打开程序,Debug进去,一看,才明白其中的原因:截图如下:

bubuko.com,布布扣

 

仔细观察,就会看见,Object中的id=133,有多项是相同的,即迭代重新赋值的时候,会把同一id中实体的值都改变。造成这个结果的原因是,在这个实体中我没有设置唯一的主键,把一个字段设为主键,但是它是可以重复的,所以就会造成这样的结果。

总而言之,对有些问题还是要深入的了解,如果明白迭代循环的原理就不会出现这样的情况了。

List迭代循环时出现分问题,布布扣,bubuko.com

List迭代循环时出现分问题

原文:http://www.cnblogs.com/sansanboy/p/3603171.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!