Java,通过arraylist调用对象方法

时间:2013-08-26 03:01:28

标签: java oop object arraylist

基于此问题Increment variable names?

我有一个arraylist'peopleHolder',它拥有各种“人物”物品。 我想基于for循环自动创建'person'对象。 我做了以下

    peopleHolder.add(new person());

我想调用person类中的方法。例如person.setAge; 我如何通过arraylist调用这些方法? 我想要为每个对象设置值的方法。 我看过这个答案:Java - calling methods of an object that is in ArrayList
但我认为解决方案依赖于调用静态方法,我希望在存储对象值时让方法特定于对象。

4 个答案:

答案 0 :(得分: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 Naming Conventions并使用camelCase风格。类/接口/枚举应以大写字母开头,如Person,变量/方法名称的第一个标记应以小写字母开头,而其他大写字母则以peopleHolder为大写。

答案 1 :(得分:3)

这是你在找什么?

for(person people: peopleHolder){
people.setAge(25);
}

答案 2 :(得分: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(..);

答案 3 :(得分: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);

}