我有一个类UserGroup,它具有ArrayList userList。我创建了名为“ myUserGroup”的类的第一个实例,并用10个元素填充它,然后创建了名为“ administrators”的第二个实例。我想遍历“ myUserGroup”数组列表,如果元素等于“ admin”,则将其添加到“管理员”数组列表中。

这是UserGroup类:

public class UserGroup {

    ArrayList<User> userList;

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

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


这是我尝试将元素添加到第二个UserGroup arraylist的类:

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

最佳答案

几个问题:


我认为您在每个循环上都获得了一个新的迭代器。
你打电话
next()当您打算获取同一对象时,两次,两次
后续对象。


试试这个而不是你的while循环:

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

09-06 13:24