`

当List中add数据重复覆盖怎么办

阅读更多

当向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 ------------------------------------------------------

分享到:
评论

相关推荐

    set.list.map接口

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2.List(列表&lt;接口&gt;)以线性方式存储,有序,允许重复主要实现类有LinkList(采用链表数据结构)和ArrayList(代表可大可小的数组) Eg: ...

    arcgis工具

    如:“AREA”,如果查询的是个人地理数据库数据,则需要将字段名包含在方括号内,如:[AREA],如果查询的是ArcSDE地理数据库数据或是ArcIMS要素类或ArcIMS影象服务子层中的数据,则不需要将字段名括起,如:AREA ...

    net学习笔记及其他代码应用

    2.使用VS.NET中的Add Web Reference菜单选项 23..net Remoting 的工作原理是什么? 答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。 24.在C#中,string str = null 与 string str = ...

    asp.net知识库

    SubmitOncePage:解决刷新页面造成的数据重复提交问题 SharpRewriter:javascript + xml技术利用#实现url重定向 采用XHTML和CSS设计可重用可换肤的WEB站点 asp.net的网址重定向方法的比较:面向搜索引擎友好 也谈 ...

    java 面试题 总结

    引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...

    新手学习C++入门资料

    C++中还包括wchar_t数据类型,wchar_t也是字符类型,但是是那些宽度超过8位的数据类型。许多外文字符集所含的数目超过256个,char字符类型无法完全囊括。wchar_t数据类型一般为16位。 标准C++的iostream类库中包括...

    二十三种设计模式【PDF版】

    很简单一个模式,就是在内存中保留原来数据的拷贝. 设计模式之 Interpreter(解释器) 主要用来对语言的分析,应用机会不多. 设计模式之 Visitor(访问者) 访问者在进行访问时,完成一系列实质性操作,而且还可以扩展. ...

    网管教程 从入门到精通软件篇.txt

     bootcfg /list 列出引导列表中已有的条目。  bootcfg /disableredirect 在启动引导程序中禁用重定向。  bootcfg /redirect [ PortBaudRrate] |[ useBiosSettings]  在启动引导程序中通过指定配置启用重定向...

    达内 coreJava 习题答案

    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=打开文件失败,请检查升级文件是否存在!...

Global site tag (gtag.js) - Google Analytics