2016-12-03 4 views
0

Ich habe eine ArrayList namens groupOfPeople erstellt, indem ich einen Konstruktor habe, der ihren Namen und ihr Alter annimmt. Dies wurde der Arraylist wie folgt hinzugefügt:Wie Methoden auf Arrays innerhalb einer ArrayList aufrufen?

groupOfPeople.add(new Person(23,"Tom")); 

Jetzt will ich diese Person eine sleep() Methode machen aufrufen, die in einer anderen Klasse gespeichert wird. Ich habe es so genannt:

SleepClass callSleepClassr = new SleepClass(); 

Jetzt habe ich die erste Person in der Arraylist anrufen möchten, und sie so machen schlafen .callSleepClass.sleep() ihnen hinzufügen. Die Sache ist, ich weiß nicht, wie ich mich auf dieses erste Array beziehen soll.

Jede Hilfe ist willkommen, danke.

+0

Iterierte eine d Rufen Sie jedes Element ODER verwenden Sie java8 forEach –

+0

'für (Person x: Personen) { x.callshower.shower(); } 'funktioniert nicht, wie würde ich x machen dies tun? – James

Antwort

1

Durch Java8 Ströme verwenden, können Sie die Prüfung für leere Liste enthalten auch,

groupOfPeople.stream().findFirst().ifPresent(SleepClass::sleep); 

Die sleep Verfahren dann einen Person Parameter nehmen sollte.

0

Sie die Funktion auf jedes Element auf der Liste aufrufen können, indem Sie:

for (Person p : groupOfPeople) { 
    p.callSleepClass.sleep();    
} 

Wenn Sie es für das erste Element in der Liste tun möchten, können Sie verwenden:

if(groupOfPeople.size()>1) 
    groupOfPeople.get(0).callSleepClass.sleep(); 
+0

das ist nicht korrekt, op definierte *** groupOfPeople *** als ArrayList, nicht als Array –

0

wenn Sie das erste Element in der Liste einzuschläfern erhalten dann das Element am Index 0 in der Liste, und rufen Sie die Methode:

if(!groupOfPeople.isEmpty()){ 
    groupOfPeople.get(0).callSleepClass.sleep(); 
} 
Verwandte Themen