5

基于这个问题 Increment variable names?

我有一个数组列表“peopleHolder”,它包含各种“人”对象。我想基于 for 循环自动创建“人”对象。我做了以下

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

现在我们在列表中有两个人,我们想设置他们的名字。我们可以这样做

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

我有几个人对象。我使用循环自动在“人员”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 回答