super87298 2012-08-30 13:11
浏览 207
已采纳

java add函数,添加进去全部变成最后一组数据

String[] turn1 = idList.split(",");
String[] turn2 = labelList.split(",");
Attribute attribute = new Attribute();
List Temp = new ArrayList();

for(int i=0;i<turn1.length;i++){
long getId;
getId = Integer.parseInt(turn1[i]);
attribute.setId(getId);
attribute.setLabel(turn2[i]);
Temp.add(attribute);
}
for(int i=0;i<3;i++)
System.out.println(Temp.get(i));

就是我现在turn1.length只有3组数据,Add进去Temp之后应该是有三组不同的数据才对。但是现在我Add进去之后虽然是有三组对象,但是里面的数据竟然全部是最后一组的数据。
我现在debug模式下看到三次attribute的数据都是不同的,现在是每循环一次当前的attribute就会把Temp里面的前一组数据给覆盖掉,这是为什么?

输出数据
isPK=false,oid=0,id=1354,name=,label=额定电压
isPK=false,oid=0,id=1354,name=,label=额定电压
isPK=false,oid=0,id=1354,name=,label=额定电压

  • 写回答

4条回答 默认 最新

  • jinnianshilongnian 2012-08-30 13:13
    关注

    Attribute attribute = new Attribute();

    应该放在
    for(int i=0;i<turn1.length;i++){
    Attribute attribute = new Attribute();
    }

    否则你只new了一个 for循环的每一次都修改你的for循环外部的attribute, 因此最后一次修改覆盖了之前的所有(List中的数据都是同引用)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制