2017-10-26 5 views
0

Ich habe eine Klasse UserGroup, die eine ArrayList userList hat. Ich mache eine erste Instanz der Klasse namens "myUserGroup" und fülle sie mit 10 Elementen, dann mache ich eine zweite namens "Administratoren". Ich möchte die 'myUserGroup' Arraylist durchlaufen und wenn das Element gleich "admin" ist, füge es der 'administrator'-Arraylist hinzu.Java - Wie man durch eine Objekt-Arraylist iteriert und Elemente, die eine bestimmte Bedingung erfüllen, zu einer anderen Objekt-Arraylist

Hier ist die Usergroup Klasse:

public class UserGroup { 

    ArrayList<User> userList; 

    UserGroup(){ 
     userList = new ArrayList<User>(); 

    public Iterator<User> getUserIterator() { 
     Iterator<User> iterate = userList.iterator(); 
     return iterate; 
    } 

Hier ist die Klasse, in der ich versuche, um die Elemente der 2. Usergroup Arraylist hinzuzufügen:

public class Main { 

public static void main(String[] args) { 

    UserGroup myUserGroup = new UserGroup(); 

    myUserGroup.addSampleData(); 

    UserGroup administrators = new UserGroup(); 

    while(myUserGroup.getUserIterator().hasNext()) { 

     if(myUserGroup.getUserIterator().next().getUserType().equals("admin")) { 

      administrators.userList.add(myUserGroup.getUserIterator().next()); 
     } 
    } 
+0

Anruf .next() nur einmal innerhalb der Schleife. –

Antwort

1

Ein paar Probleme:

  1. Ich denke, Sie bekommen einen neuen Iterator in jeder Schleife.
  2. Sie rufen next() zweimal, wenn Sie beabsichtigen, das gleiche Objekt zu erhalten, erhalten zwei nachfolgende Objekte.

Versuchen Sie stattdessen Ihre while-Schleife:

for (User u : myUserGroup.userList) { 
    if (u.getUserType().equals("admin")) { 
    administrators.userList.add(u); 
    } 
} 
Verwandte Themen