当向List中add()时,size()正常递增,但加进去的元素却都是一样的重复着。注意了,很有可能是你加入得元素是某个bean,且这个bean被你在调用的类中定义成域成员,并实例化了。这时候你再循环改变bean里的内容add()到list中,那么根据java的对象存的是地址的原理,你的list里全是那个实例化bean的地址,最后元素值就全都一样,并且取的是最后一次改变的值。 解决办法是bean被你在调用的类中定义成域成员时不要实例化,到循环内部再实例化,这样就保证了每一个add到list里的对象都是new出来的。
举例说明吧!
错误代码:
public class UserSupplierAction extends ActionSupport implements Preparable {
public Suppl suppl = new Suppl(); // 标记1
public List<Suppl> suppList = new ArrayList<Suppl>();
......
public String selectSuppliers() throws Exception {
for(Supplier sup:supplierList){
// 标记2
suppl.setId(sup.getId());
suppl.setName(sup.getName());
if(null != supplierids && !"".equals(supplierids)) {
String[] supids = supplierids.split(",");
for(String supid:supids){
if(sup.getId().equals(supid.toString())){
suppl.setFlag(1);
break;
}
}
}
suppList.add(suppl);
//注意 红色的地方 这样的结果就是suppList里都是重复的元素
改正代码就是将 标记1 处的改为 public Suppl suppl;
标记2处加个 suppl = new Suppl();
--------------------------------------------------------- end ------------------------------------------------------
相关推荐
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2.List(列表<接口>)以线性方式存储,有序,允许重复主要实现类有LinkList(采用链表数据结构)和ArrayList(代表可大可小的数组) Eg: ...
如:“AREA”,如果查询的是个人地理数据库数据,则需要将字段名包含在方括号内,如:[AREA],如果查询的是ArcSDE地理数据库数据或是ArcIMS要素类或ArcIMS影象服务子层中的数据,则不需要将字段名括起,如:AREA ...
2.使用VS.NET中的Add Web Reference菜单选项 23..net Remoting 的工作原理是什么? 答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。 24.在C#中,string str = null 与 string str = ...
SubmitOncePage:解决刷新页面造成的数据重复提交问题 SharpRewriter:javascript + xml技术利用#实现url重定向 采用XHTML和CSS设计可重用可换肤的WEB站点 asp.net的网址重定向方法的比较:面向搜索引擎友好 也谈 ...
引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...
C++中还包括wchar_t数据类型,wchar_t也是字符类型,但是是那些宽度超过8位的数据类型。许多外文字符集所含的数目超过256个,char字符类型无法完全囊括。wchar_t数据类型一般为16位。 标准C++的iostream类库中包括...
很简单一个模式,就是在内存中保留原来数据的拷贝. 设计模式之 Interpreter(解释器) 主要用来对语言的分析,应用机会不多. 设计模式之 Visitor(访问者) 访问者在进行访问时,完成一系列实质性操作,而且还可以扩展. ...
bootcfg /list 列出引导列表中已有的条目。 bootcfg /disableredirect 在启动引导程序中禁用重定向。 bootcfg /redirect [ PortBaudRrate] |[ useBiosSettings] 在启动引导程序中通过指定配置启用重定向...
12、输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值 1 1 2 3 5 8 13 21 34 规律:一个数等于前两个数之和 //计算斐波那契数列(Fibonacci)的第n个值 public class Fibonacci{ public static void main...
Send data error.=传输数据出现错误 Burning:=烧写进度: Update Success=升级完成 Update Failed=升级失败 Open update file failed please check if the update file exist=打开文件失败,请检查升级文件是否存在!...