list add循环赋值内容没变,踩坑日记

list循环赋值踩坑—list的内容都是一个样

listadd同一个对象时,这个对象需要在循环new,不然list指向的地址永远只有一个!!!

错误

MultipartFile[] files=xxx;
List<tsmFileupLog> arrTsmFileupLogs=new ArrayList<tsmFileupLog>;
TsmFileupLog tsmFileupLog = new TsmFileupLog();
  for (MultipartFile file : files) {
      tsmFileupLog.setCreateBy(currentUser.getUserName());
      tsmFileupLog.setUploadBy(currentUser.getUserName());
      tsmFileupLog = tsmFileService.uploadFile(tsmFileupLog, file);
      arrTsmFileupLogs.add(tsmFileupLog);
   }

正确

MultipartFile[] files=xxx;
List<tsmFileupLog> arrTsmFileupLogs=new ArrayList<tsmFileupLog>;
  for (MultipartFile file : files) {
       TsmFileupLog tsmFileupLog = new TsmFileupLog();
       tsmFileupLog.setCreateBy(currentUser.getUserName());
       tsmFileupLog.setUploadBy(currentUser.getUserName());
       tsmFileupLog = tsmFileService.uploadFile(tsmFileupLog, file);
       arrTsmFileupLogs.add(tsmFileupLog);
  }

原因:在循环对象赋值时,需要多次循环new一个对象,在内存中开辟多个内存空间,list下标的指向地址就会不一样
如果只是new一个对象,则内存中只开辟一个内存空间位置,list的指针指向都是一个对象,所以会导致list循环add会全都是一个内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小诺大人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值