0

turn1.length只有3组数据,添加temp时,应该有3组不同的数据。但是,我添加后,即使有3组对象,其中的日期预计是最后一组日期,全部。我在调试模式下看到三个不同的数据,当前属性将在每个周期覆盖 temp 中的上一个数据。

我该如何解决?

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

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)); 
4

1 回答 1

4

您正在循环中更改相同的对象,当您将对象添加到列表时,这不会复制对象,只是引用该对象,因此列表中的每个元素都将指向相同的原始对象。

你应该做的是新Attribute的循环内部。

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

for(int i=0;i<turn1.length;i++){ 
    long getId;
    Attribute attribute = new Attribute(); 
    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)); 
于 2012-08-31T02:49:34.750 回答