2013-08-26 28 views
4

基於這個問題Increment variable names?Java中,調用對象方法thorugh ArrayList的

我有一個ArrayList「peopleHolder」持有不同的「人」的對象。 我想基於for循環自動創建'person'對象。 我做了以下內容

peopleHolder.add(new person()); 

我想從person類中調用方法。例如person.setAge; 如何通過數組列表調用此類方法? 我想爲每個對象設置值的方法。 我已經看過這個答案:Java - calling methods of an object that is in ArrayList
但我認爲解決方案取決於調用靜態方法,並且我想在對象存儲對象值時使用特定於該方法的方法。

謝謝

+0

你的問題是不明確的,你有什麼意義? – nachokk

+0

我有幾個人對象。我使用循環自動在'people'arrayList中創建新的人物對象。我想訪問定義對象的各種特徵(setAge,setHeight等)的方法。我如何訪問我在我的數組列表中創建的對象的方法。 –

+0

你想創建Arraylist引用到人類中,對不對? –

回答

8

如果你想調用一些方法從你的清單,你需要首先遍歷他們中的每個元素調用方法的所有對象。可以說你的清單看起來像這樣

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

BTW你應該Java Naming Conventions堅持並使用駝峯風格。類/接口/枚舉應以大寫字母Person開頭,變量/方法名稱的第一個標記應以小寫字母開頭,而其他標記則以peopleHolder之類的大寫字母開頭。

+0

很確定應該是'list.get(i)'而不是'list.get(0)'。 – Makoto

+0

@Makoto是的,糾正。 – Pshemo

+0

謝謝Pshemo。在setName方法中,爲什麼要添加我? –

3

這是你在找什麼?

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

是的,這是它,謝謝 –

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

}