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

 public List getListByPage(Page currPage) {
Map recordTypeMap = BusnDataDir.recordTypeMap;
List infoList = currPage.getQueryResult();
List<CollectNewsGroup> info = new ArrayList<CollectNewsGroup>();
Iterator itr = infoList.iterator();
while (itr.hasNext()){
CollectNewsGroup news = new CollectNewsGroup(); news = (CollectNewsGroup) itr.next(); String userId = news.getUser();
String recordType = news.getRecordType(); SysUser sysUser = (SysUser) operInfoDAO.getObject(SysUser.class, userId);
String userName = sysUser.getUsername(); String recordTypeName = (String) recordTypeMap.get(recordType);
news.setUser(userName);
news.setRecordType(recordTypeName); info.add(news); } return info;
}

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

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

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

List迭代循环时出现分问题的更多相关文章

  1. js倒计时,显示NaN天NaN时NaN分(或显示天时分)

    最近在开发跨平台的应用,在做秒杀功能时,倒计时出现了问题.默认在Chrome浏览器中运行,倒计时没出现问题.而在IE浏览器,火狐浏览器,safari浏览器上运行时,则显示NaN天NaN时NaN分(或显 ...

  2. 编写Java应用程序。首先,定义一个时钟类——Clock,它包括三个int型 成员变量分别表示时、分、秒,一个构造方法用于对三个成员变量(时、分、秒) 进行初始化,还有一个成员方法show()用于显示时钟对象的时间。其次,再定义 一个主类——TestClass,在主类的main方法中创建多个时钟类的对象,使用这 些对象调用方法show()来显示时钟的时间。

    package com.hanqi.test; public class Clock { int hh; int mm; int ss; String time; Clock(int h,int m, ...

  3. Java 获取各时区时间,获取当前时间到格林威治时间1970年01月01日00时00分00秒的秒数

    格林威治时间即UTC/GMT时间,1970年01月01日00时00分00秒(即UTC+8的北京时间1970年01月01日08时00分00秒)计算代码如下: /** * 获取指定时间到格林威治时间的秒数 ...

  4. sql 计算两时间或日期 的相差的 年、 月、 日、时、分、秒,年、月、日分别的提取

    --年.月.日.时.分.秒 datediff(yy,date1,date2) datediff(m,date1,date2) datediff(d,date1,date2) datediff(hh,d ...

  5. JAVA 时间差距,两个时间相差多少天,时,分,秒

    JAVA 时间差距,两个时间相差多少天,时,分,秒 package io; import java.text.DateFormat; import java.text.ParseException; ...

  6. 15-5-23 下午02时22分58秒 CST> <Info> <Management> <BEA-141281> <unable to get file lock, will retry ...>

     A-141281> <unable to get file lock, will retry ...>   http://gdutlzh.blog.163.com/blog/s ...

  7. SQL语句更新时间字段的年份、月份、天数、时、分、秒

    SQL语句更新时间字段的年份.月份.天数.时.分.秒 --修改d表日期字段的年份update dset birth=STUFF(convert(nvarchar(23),birth,120),1,4, ...

  8. jquery计算时间差(天、时、分、秒)并使用定时器实时获取

    类似网站抢购需求,会有个时间倒计时的展示(天.时.分.秒) 要拿到最终时间与当前时间对比,算出时间差并用定时器以秒的方式执行 实现代码: $(document).ready(function(){ r ...

  9. 我的第一篇博客之js的XXXX年XX月XX日 星期[日一-六] [上下]午 XX时:XX分

    <!DOCTYPE html> <html>     <head> <title>test</title>                 ...

随机推荐

  1. HBuilder手机Iphone运行提示“未受信用的企业级开发者”

    HBuilder手机Iphone运行提示“未受信用的企业级开发者” 解决方法:设置-----通用------设备管理-----点击Digtial Heaven....---信任"Digtia ...

  2. git 401 错误

    错误信息:error: The requested URL returned error: 401 Unauthorized while accessing https://git.oschina.n ...

  3. session阻塞机制,解决方法

    session从生成到读取,或从生成到写入都出现锁定的情况. 1.session_start();session_commit(); 2.session_start();session_write_c ...

  4. AppDomain(1)-AppDomainSetup

  5. sitecustomize.py 用法

    1.在python安装目录下的lib下的site-packages 目录中,新建文件sitecustomize.py.这是个特殊的文件,在python启动时会自动执行其中的语句.在sitecustom ...

  6. 斗地主你什么时候才会托管?(.NET中的托管于非托管)

    文章部分引自<.NET4.0面向对象编程漫谈(基础篇)>第1章.NET面向对象编程基础(作者:金旭亮) 无意间看到一位四五岁左右小朋友在玩斗地主,总开始到结束,她一直都在使用“提示”(托管 ...

  7. 工作流(worfflow)

    -- 工作流(Workflow)就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程自动进行,从而实现某个预期的业务 ...

  8. Windows Server以服务方式部署Tomcat

    部署免安装版Tomcat7,步骤如下: 解压Tomcat7到指定目录之后,通过命令行定位到 apache-tomcat-7.0.53\bin 目录下面,然后输入 service.bat install ...

  9. iOS 一些struct类型的NSLog输出格式-b

    我们经常会输出一些坐标尺寸信息之类的,比如view的frame,是CGRect类型的,用frame.oringial.x 和frame.size.width来做NSLog参数好麻烦,还好苹果对这些常用 ...

  10. Computer Vision Applied to Super Resolution

    Capel, David, and Andrew Zisserman. "Computer vision applied to super resolution." Signal ...