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 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型