-1
ArrayList<Persons> persList = new ArrayList<Persons>();

for(Persons p : persList){
    Persons pers = new Persons();
    pers = service.getPersons(id);
    p.setAddress(pers.getAddress());
    persList.add(pers);
}   

これは、見つかったすべての人を persList に追加する正しい方法ですか? 前もって感謝します。

4

1 に答える 1

4

いいえ、メソッドを使用する場合を除き、反復処理中にリストを変更しないでくださいIterator.remove。他のことは別として、このコードが例外をスローしなかったとしても、persList空でない限り永遠に続きます...反復する新しい人が常にいます!

基本的に、追加するアイテムを集めて新しいリストを作成addAllし、最後に使用する必要があります。

ArrayList<Persons> persList = new ArrayList<Persons>();
// Populate the list, presumably
List<Persons> extraPeople = new ArrayList<Persons>();

for(Persons p : persList){
    // Note: there's no point in creating a new object only to ignore it...
    Persons pers = service.getPersons(id);
    p.setAddress(pers.getAddress());
    extraPeople.add(pers);
}

persList.addAll(extraPeople);

このコードは、繰り返しごとに同じ値を使用してフェッチしているため、私の見解ではまだあまり意味がありませんid...これが実際のコードではなく例であることを願っています。

また、クラスの各インスタンスがPersons1 人であることを意図している場合は、それを と呼ぶ方がよいことに注意してくださいPerson

于 2013-06-07T14:57:51.280 に答える