Java - 如何遍历对象数组列表并将满足特定条件的元素添加到另一个对象数组列表
Java - How to iterate through an objects arraylist and adding elements that meet a certain condition to another objects arraylist
我有一个 class 用户组,它有一个 ArrayList 用户列表。我制作了一个名为 'myUserGroup' 的 class 的第一个实例,并用 10 个元素填充它,然后我制作了一个名为 'administrators' 的第二个实例。我想遍历 'myUserGroup' 数组列表,如果元素等于 "admin",则将其添加到 'administrators' 数组列表。
这是用户组 class:
public class UserGroup {
ArrayList<User> userList;
UserGroup(){
userList = new ArrayList<User>();
public Iterator<User> getUserIterator() {
Iterator<User> iterate = userList.iterator();
return iterate;
}
这是我试图将元素添加到第二个用户组数组列表的 class:
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);
}
}
我有一个 class 用户组,它有一个 ArrayList 用户列表。我制作了一个名为 'myUserGroup' 的 class 的第一个实例,并用 10 个元素填充它,然后我制作了一个名为 'administrators' 的第二个实例。我想遍历 'myUserGroup' 数组列表,如果元素等于 "admin",则将其添加到 'administrators' 数组列表。
这是用户组 class:
public class UserGroup {
ArrayList<User> userList;
UserGroup(){
userList = new ArrayList<User>();
public Iterator<User> getUserIterator() {
Iterator<User> iterate = userList.iterator();
return iterate;
}
这是我试图将元素添加到第二个用户组数组列表的 class:
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);
}
}