私はクラスにコンストラクタを追加することで標準的な方法があることを知っています。しかし、オブジェクトスーパークラス(引数なしコンストラクタを持つ)のクラスでは、一時オブジェクトを使用する方が簡単です。そのような行為のために、何らかの側面がありますか?一時オブジェクトを使って配列からArrayListを作成する
import java.util.ArrayList;
public class Main {
public static void main(String[] args){
// data available in two separated arrays
String[] dName = {"Sam","Ben","Joye","Sarah","Tim","Lucy","Jack"} ;
int[] dAge= {10,52,53,15,12,60,21};
// Array list to put the data in
ArrayList<Person> personList =new ArrayList<Person>(7);
for (int i=0;i<dName.length;i++){
Person tempPerson = new Person();
tempPerson.name= dName[i];
tempPerson.age= dAge[i];
personList.add(new Person());
personList.set(i,tempPerson);
tempPerson=null; //removes the reference
}
for (int j=0 ; j<personList.size();j++){
System.out.println(personList.get(j).name+" age is "+personList.get(j).age);
}
}
}
class Person{
String name;
int age;
}
出力あなたは多分java8ストリームを利用することが、なぜ難しいあなたの人生を作ることができ
Sam age is 10
Ben age is 52
Joye age is 53
Sarah age is 15
Tim age is 12
Lucy age is 60
Jack age is 21
なぜあなたは最初に 'new Person()'をリストに追加したのですか?その後ろの 'tempPerson'ですか?また、リファレンスを削除する必要はありません。ループサイクルごとに「フリー」になります。 –
まず、私はあなたの質問を理解していませんでした。 2つの配列からArrayListを自動的に作成しますか?第2に、forループのオブジェクト管理は少し奇妙です。 ArrayListに新しいPerson()を追加してから、tempPersonをnullに設定するのはなぜですか? –
pca
はい、あなたはそれが再び構築されてからすべてのループを解放することを意味しました。私は再び更新する前にそれを破壊する方が良いと思った。 – Elgoph