【发布时间】:2016-11-05 18:29:16
【问题描述】:
对于我的作业,我必须演示从数组列表中删除用户(完成),然后使用迭代器遍历数组列表,而不是从列表中删除用户,我必须从该列表中只输出一个特定用户.这个问题类似于我关于删除元素的另一个问题,但不同之处在于我询问如何遍历列表并输出一个用户,而不是从列表中删除用户。我尝试使用包含 if 语句并使用 .next() 函数的 while 循环,但这似乎并没有输出 1 个用户,因为它仍然输出所有用户。我将分享重现这部分程序的相关代码:
主类(用于调用方法)
package main;
public class Main{
public static void main(String[] args) {
System.out.println("***********Iteration of administrators***********");
UserGroup2 userGroupObject2 = new UserGroup2();
for (User secondusergroup : userGroupObject2.getUserGroup())
{
userGroupObject2.getUserIterator();
System.out.println(secondusergroup.toString());
}
}
}
}
UserGroup2 类(已创建数组列表的位置)
package main;
import java.util.ArrayList;
import java.util.Iterator;
public class UserGroup2 implements Iterable<UserGroup2> {
ArrayList<User> administrators = new ArrayList<>();
public UserGroup2()
{
addUser(new User("lnb1g16", "Student", "Lee"));
addUser(new User("hpf1g17", "Staff", "Harry"));
addUser(new User("jks1g25", "Student", "Jordon"));
addUser(new User("ohw1237", "Admin", "Oliver"));
addUser(new User("ahs1213", "Student", "Jordon"));
addUser(new User("bdh1285", "Admin", "Bob"));
addUser(new User("tqn1294", "Student", "Taylor"));
}
public void addUser(User inUser)
{
//userGroup.add(new User("LeeB123", "Staff", "Lee"));
administrators.add(inUser);
}
public ArrayList<User> getUserGroup() {
return administrators;
}
public void getUserIterator() {
Iterator<User> it2 = administrators.iterator();
while (it2.hasNext()) {
User xxx = it2.next();
if (xxx.getUsername().equals("jks1g25")) {
it2.next();
}
}
}
}
用户类(用户的详细信息)
package main;
class User {
String username;
String userType;
String name;
User(String username, String userType, String name) {
this.username = username;
this.userType = userType;
this.name = name;
}
public String getUsername() {
return username;
}
public String getUserType() {
return userType;
}
public String getName() {
return name;
}
public String setUserType(String admin) {
return userType = "admin";
}
@Override
public String toString() {
return username + " " + userType;
}
}
我已经尝试在线搜索如何执行此操作,但我似乎找不到指定如何输出数组列表的一个元素的来源,因此这可能会帮助其他可能遇到相同问题的人,任何帮助都是赞赏,谢谢。
【问题讨论】:
-
而不是
it2.next()里面的if,你不能做System.out.println(xxx);吗? -
查看 ArrayList 文档:docs.oracle.com/javase/7/docs/api/java/util/…
-
我有它,所以它得到了列表的第 6 次迭代,但似乎每次遍历数组列表时都会打印出这个迭代,并且它会为每个用户遍历数组列表,所以它是为程序中的每个用户打印此迭代。有人知道如何解决这个问题,让它只打印一次吗?