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

当List中add数据重复覆盖怎么办,第1张

当向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){//标记2suppl.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()

在JAVA中,想要把一个list中的内容添加至另一个list中,有两种方法:

采用循环的方法。通过循环第一个ArrayList,然后通过每循环一次的方式,将值赋值给另一个ArrayList。具体代码实现如下:

2.采用ArrayList自带的addAll()方法。addAll()方法是通过传入整一个List,将此List中的所有元素加入到新的List中,也就是当前List会增加的元素个数等于传入的List的大小。该方法较为简单,具体代码实现如下:

拓展资料:

1.List.add() 和 List.addAll() 的区别:

(1)List.add() 方法,也是往List 中增加list,但是,它增加的是一个List 实例。如果,往容器中增加的那个List 实例从数据库中查到的结果有5条,不过,如果使用了List.add(list1)程序只会输出一条记录。原因就是上面说的。List.add() 加List 实例,它会把这个看一个实例,而不是把那个看成一个容器。

(2) 例如:List.add(list1),List.add(list2)List.add(list3),  这时,List.size 它的大小是3。

(3)List.add() 的含义就是:你往这个List 中添加对象,它就把自己当初一个对象,你往这个List中添加容器,它就把自己当成一个容器。

(4)List.addAll()方法,就是规定了,自己的这个List 就是容器,往里面增加的List 实例,增加到里面后,都会被看成对象。

(5) 这时:List.add(list1),List.add(list2)List.add(list3),  这时,List.size 它的大小就是所有list 实例化后的总数和总的记录数。

2.集合是Java API所提供的一系列类,可以用于动态存放多个对象。集合与数组的不同在于,集合是大小可变的序列,而且元素类型可以不受限定,只要是引用类型。集合中不能放基本数据类型,但可以放基本数据类型的包装类。 集合类全部支持泛型,是一种数据安全的用法。java列表是集合的一种,并且列表中的元素是有序的,且允许重复。java列表又称为java list。

参考资料:Java List_百度百科

新建对象,不可能覆盖啊,第二次执行不是0,1了吗,这不就没有覆盖了吗。

出现第一次的情况可能是你把Student类的count属性设置成static了,这样你改变一次count,所有Student实例对象的count值都变成一样的了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11736040.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存