5

この質問に基づいて、 変数名を増やしますか?

さまざまな「人」オブジェクトを保持する配列リスト「peopleHolder」があります。for ループに基づいて「person」オブジェクトを自動的に作成したいと考えています。私は次のことをしました

    peopleHolder.add(new person());

person クラスからメソッドを呼び出したいと思います。たとえば、person.setAge; 配列リストを介してそのようなメソッドを呼び出すにはどうすればよいですか? メソッドで各オブジェクトの値を設定したいと思います。私はこの答えを見てきました: Java - ArrayList にあるオブジェクトのメソッドを呼び出してい
ますが、解決策は静的メソッドの呼び出しに依存していると思います。オブジェクトの値を格納するため、オブジェクトに固有のメソッドが必要です。

4

4 に答える 4

12

リストのすべてのオブジェクトで何らかのメソッドを呼び出したい場合は、最初にそれらを繰り返し処理し、各要素でメソッドを呼び出す必要があります。リストが次のようになっているとしましょう

List<person> peopleHolder = new ArrayList<person>();
peopleHolder.add(new person());
peopleHolder.add(new person());

リストに 2 人の人物がいて、その名前を設定します。このようにできます

for (int i=0; i<list.size(); i++){
    list.get(i).setName("newName"+i);//this will set names in format newNameX
}

または強化された for ループを使用する

int i=0;
for (person p: peopleHolder){
    p.setName("newName" + i++);
}

ところで、Java 命名規則に固執し、camelCase スタイルを使用する必要があります。クラス/インターフェース/列挙型は のように大文字で始める必要がPersonあり、変数/メソッド名の最初のトークンは小文字で始める必要がありますが、他のものは のように大文字で始める必要がありますpeopleHolder

于 2013-08-26T03:11:46.957 に答える
3

これはあなたが探しているものですか?

for(person people: peopleHolder){
people.setAge(25);
}
于 2013-08-26T03:06:14.047 に答える
2

私はいくつかの人のオブジェクトを持っています。ループを使用して、「people」arrayList に新しい人物オブジェクトを自動的に作成します。オブジェクトのさまざまな特性 (setAge、setHeight など) を定義するメソッドにアクセスしたいと思います。arraylist で作成したオブジェクトのそのようなメソッドにアクセスするにはどうすればよいですか?

あなたが作成するのと同じ方法で。

リスト内のすべての人について、それを繰り返すことができます

for(Person person : peopleHolder){
  person.setHeight(..);
  person.setAge(..)
}

get(int index)リスト内のいくつかのインデックスについては、リストがarrayListであり、O(1)であるため、使用できます。

 Person p = peopleHolder.get(someIndex); // where  0 <= someIndex < peopleHolder.size()
 p.setHeight(..);
于 2013-08-26T03:14:20.840 に答える
1

あなたのコードに従って、これを行うことができます

ArrayList<Person> personHolder = new ArrayList<Person>();

for (int i = 0; i < 10; i++) {

    personHolder.add(new Person());

}

// If you want user input, do it in the loop below
for (Person p : personHolder) {

    p.setAge(30);

}
于 2013-08-26T03:26:21.667 に答える