如何在Array List中为用户分配属性?

时间:2016-11-02 15:02:30

标签: java arraylist

到目前为止,我已经创建了一个目前只包含一个用户的数组列表。对于我的任务,我被要求打印该用户的属性,例如其用户名和userType。据我所知,我已经创建了一个增强的for循环,只要它们被分配就会打印出这些属性。我的问题是如何将这些属性分配给我的用户?我已经创建了一个UserGroup类,其中包含数组列表和一个User类,其中指定了一些有关User的详细信息但是我不确定User类是否适合我想要实现的目的。以下是这两个类的代码:

用户组:

 package main;
import java.util.ArrayList;

public class UserGroup {

    ArrayList<User> userGroup = new ArrayList<>();
    User userOne;

    public void addSampleData(String username, String userType, String name) {

    userGroup.add(new User("LeeB", "Staff", "Lee"));

}

    public User getUser(int index)  {

    return userGroup.get(0);

}

    public void printusername(){

       for (User x : userGroup)
           System.out.println(x);

    }
}

用户:

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

}

主要方法:

package main;

public class Main {
 public static void main(String[] args) {
    for (int counter=2; counter<=40; counter+=2) {
       System.out.println(counter);
    }
    System.out.println("For loop complete.");

    int counter = 1;
    int increment = 2;
    int loopexeccounter = 0;
    while (counter <= 500) {
        loopexeccounter = loopexeccounter + 1;
        System.out.println(counter);
    counter = counter + increment++;
    }
System.out.print("This loop iteratted "+loopexeccounter+" times.");
}

    public Main() {

     UserGroup userGroupObject = new UserGroup();

 System.out.println(userGroupObject.getUser(0)); 
 }

}

忽略最新方法之上的所有内容,它只是他们希望我们打印出来的一些循环示例。

更新版本,没有错误,但用户(0)没有打印出来。

1 个答案:

答案 0 :(得分:1)

  

到目前为止,我已经创建了一个目前只包含一个用户的数组列表。

实际上,永远不会分配user0。它是null,所以你只需要在列表中添加null。

您不需要user0变量。

ArrayList<User> userGroup = new ArrayList<>();
User userOne;

public void addSampleData(String username, String userType, String name) {
    userGroup.add(new User(username, userType, name));
}

然后,

public User getUser(int index)  {
    return userGroup.get(index);
}

如果您想要第一个用户,请使用0作为参数调用该方法。

就这一点而言,没关系,但请参阅How do I print my Java object without getting "SomeType@2f92e0f4"?

public void printusername(){

   for (User x : userGroup)
       System.out.println(x);
}

或者,如果你只想要x的用户名,那么打印而不是整个对象

稍微更高级的选项,因为该组基本上是一个用户列表。

public class UserGroup extends ArrayList<User> {

或者,除非您添加比addgetprint

更专业的方法,否则您不需要该类