0

turn1.length には 3 セットのデータしかありません。temp を追加すると、3 つの異なるデータ セットが存在するはずです。全て。デバッグ モードで 3 つの異なるデータが表示されます。現在の属性は、各サイクルの一時データをカバーします。

どうすれば修正できますか?

  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 に答える