Java - 如何迭代对象数组列表并将满足特定条件的元素添加到另一个对象数组列表

标签 java arraylist iterator listiterator

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

这是 UserGroup 类:

public class UserGroup {

    ArrayList<User> userList;

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

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

这是我尝试将元素添加到第二个 UserGroup 数组列表的类:

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

最佳答案

几个问题:

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

尝试这个而不是 while 循环:

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

关于Java - 如何迭代对象数组列表并将满足特定条件的元素添加到另一个对象数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46965434/

相关文章:

java - Android:清除 Activity 堆栈

java - 如何解决这个似乎与对话框相关的运行时错误?

android - 如何在android中删除arraylist中的重复名称

c++ - 为什么取消引用字符串迭代器会产生 const char 引用?

iterator - 将父特征限制为引用

Java HashMap 在迭代时添加新条目

java - 如何在群聊中显示消息和时间?

java - Scala 类 Final def this() 声明没有公共(public)无参构造函数

java - 对对象数组进行排序会引发 long[] 错误

Java 将 ArrayList<String[]> 转换为 String[][]