java - 如何输出数组列表中的一个元素?

标签 java arraylist

对于我的作业,我必须演示从数组列表中删除用户(完成),然后使用迭代器遍历数组列表,并且我必须从该列表中仅输出一个特定用户,而不是从列表中删除用户。这个问题与我关于删除元素的其他问题类似,但不同之处在于我询问如何迭代列表并输出一个用户,而不是从列表中删除用户。我尝试使用 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/

相关文章:

java - GSON将json转换为类对象

java - 我可以以某种方式在静态上下文中使用非静态变量吗?

java - 在 Unity 中使用 Google Api Java 类?

java - 线程完成执行后是否会通知另一个加入的线程?

JAVA ArrayList从ArrayList中检索所有对象方法

java - 如何拆分分隔列表并将值重新组合成 HashMap ?

java - 当用户选择该选项时如何输出目录元哈希值?

android - 将 ArrayList 保存到 SharedPreferences

java - Java 中的 Arraylist 和数组

java - 在java中使用foreach循环时出现奇怪的错误