Java,通过arraylist调用对象方法

Posted

技术标签:

【中文标题】Java,通过arraylist调用对象方法【英文标题】:Java, call object methods through arraylist 【发布时间】:2013-08-28 11:06:07 【问题描述】:

基于这个问题Increment variable names?

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

    peopleHolder.add(new person());

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

【问题讨论】:

你的问题不清楚,什么意思? 我有几个人对象。我使用循环自动在“人员”arrayList 中创建新的人员对象。我想访问定义对象各种特征的方法(setAge、setHeight 等)。如何访问我在 arraylist 中创建的对象的这些方法。 你想在 person 类中创建 Arraylist 引用,对吗? ArrayList peopleHolder = new ArrayList();peopleHolder.add(new Person());for(Person p:peopleHolder)p.setAge(); 【参考方案1】:

如果您想在列表中的所有对象上调用某个方法,您需要先迭代它们并在每个元素中调用方法。假设您的列表如下所示

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 并使用驼峰式风格。类/接口/枚举应该以大写字母开头,例如Person,变量/方法名称的第一个标记应该以小写开头,但其他的以大写字母开头,例如peopleHolder

【讨论】:

很确定应该是list.get(i) 而不是list.get(0) 感谢 Pshemo。在 setName 方法中为什么要添加 i? @HJ 我用i 来设置不同的名字,比如newName0newName1,等等:)【参考方案2】:

这是你要找的吗?

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

【讨论】:

【参考方案3】:

我有几个人对象。我自动创建新人 使用循环的 'people' arrayList 中的对象。我想访问 定义对象的各种特征的方法(setAge, setHeight 等)如何访问我拥有的对象的此类方法 在我的数组列表中创建

以与您创建相同的方式。

对于列表中的每个人,您都可以对其进行迭代

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

【讨论】:

【参考方案4】:

按照您的代码,您可以做到这一点

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


【讨论】:

以上是关于Java,通过arraylist调用对象方法的主要内容,如果未能解决你的问题,请参考以下文章

java中怎样在一个集合中随机取一个数?

从list引用调用arraylist和linkedlist对象的方法了解多态

NullPointerException:尝试在空对象引用上调用虚拟方法“int java.util.ArrayList.size()”

尝试在空对象引用上调用虚拟方法“java.util.ArrayList com.orbotix.async.DeviceSensorAsyncMessage.getAsyncData()”

[初学者Java删除ArrayList Java问题中的对象

如何创建ArrayList数组