对于我的作业,我必须演示从数组列表中删除用户(完成),然后使用迭代器遍历数组列表,并且我必须从该列表中仅输出一个特定用户,而不是从列表中删除用户。这个问题与我关于删除元素的其他问题类似,但不同之处在于我询问如何迭代列表并输出一个用户,而不是从列表中删除用户。我尝试使用 while 循环,其中包含 if 语句并使用 .next() 函数,但这似乎不会输出 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;
}
}
我已经尝试在线搜索如何执行此操作,但我似乎找不到指定如何输出数组列表的一个元素的源,因此这可能会帮助其他可能陷入同一问题的人,感谢任何帮助,谢谢。
最佳答案
您应该尝试使您的 cade 尽可能简单。
你不想实现 Iterable,如果你真的需要能够迭代你的类,那么你应该实现 Iterator。 (参见:https://stackoverflow.com/a/22357335/4088809)
将类的成员设为私有(private)以确保封装,如果需要访问这些成员,请使用适当的 getter。
User.java
package main;
public class User {
//Set the members of this class to private
//This is to ensure encapsulation
private String username;
private String userType;
private 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;
}
//Set the usertype using the admin parameter
//instead of the string admin
//otherwise all the users will be admin
public String setUserType(String admin) {
return userType = admin;
}
@Override
public String toString() {
return username + " " + userType;
}
}
UserGroup2.java
package main;
import java.util.ArrayList;
//no need to implement Iterator, since you only add element
//to an arraylist and nothing else.
public class UserGroup2 {
private 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) {
this.administrators.add(inUser);
}
public ArrayList<User> getAdministrators() {
return administrators;
}
}
Main.java
package main;
public class Main{
public static void main(String[] args) {
System.out.println("***********Iteration of administrators***********");
//Create the user group
UserGroup2 userGroupObject2 = new UserGroup2();
//Get and iterate over the arraylist inside usergroup2
for (User currentUser : userGroupObject2.getAdministrators()) {
//Compare the current user to the username we are searching for
if (currentUser.getUsername().equals("jks1g25"))
System.out.println(currentUser.toString());
}
}
}
关于java - 如何输出数组列表中的一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40441745/