【发布时间】:2018-02-27 04:58:04
【问题描述】:
我正在尝试制作一个程序,该程序采用带有参数名称、用户名、密码和电子邮件的 User 类来创建包含此信息的 HashMap。键将是用户的名称,值将是包含用户信息(用户名、密码、电子邮件)的 ArrayList。该类应提供创建新用户的方法,该方法可从 PasswordDB 类中使用,该类通过调用此方法创建用户数组及其信息。
这是 User 类的代码:
import java.util.HashMap;
import java.util.ArrayList;
public class User
{
private String name;
private String username;
private String password;
private String email;
private ArrayList<String> arr = new ArrayList<String>();
private HashMap<String,ArrayList<String>> userInfo = new HashMap<String,ArrayList<String>>();
public User(String name, String username, String password, String email)
{
this.name=name;
this.username=username;
this.password=password;
this.email=email;
}
public HashMap<String, ArrayList<String>> addUser()
{
arr.add(username);
arr.add(password);
arr.add(email);
userInfo.put(name, arr);
return userInfo;
}
}
对于 PasswordDB 类:
import java.util.ArrayList;
import java.util.HashMap;
public class PasswordDB
{
private ArrayList<User> database;
private User newUser;
public PasswordDB()
{
ArrayList<User> database = new ArrayList<User>();
}
public void newUser(String name ,String username ,String password ,String email)
{
User newUser = new User(name, username, password, email);
database.add(newUser.addUser());
}
}
我在 PasswordDB 类中收到以下错误: error
我做错了什么?我怎样才能使这项工作?谢谢。
【问题讨论】:
-
把
database.add(newUser.addUser());改成database.add(newUser);? -
您正在尝试将
HashMap<String, ArrayList<String>>添加到List<User>。User.addUser返回HashMap。我认为你让这件事变得比它需要的更复杂,我对你想要做什么感到困惑。 -
@ElliottFrisch 现在编译但返回 NullPointerException
-
@Matt 谢谢,我没有意识到这一点。我正在尝试使用哈希图,以便可以搜索用户以根据他们的姓名查找他们的信息。
-
ArrayList<User> database = new ArrayList<User>();在构造函数中隐藏字段。删除左侧的类型。database = new ArrayList<User>();
标签: java arraylist collections hashmap