[英]Adding a collection of collections to an ArrayList
I'm trying to make a program that takes a User class with parameters name, username, password and email to create a HashMap containing this information. 我正在尝试制作一个程序,该程序采用带有参数名,用户名,密码和电子邮件的User类来创建包含此信息的HashMap。 The key will be the name of the User and the value will be an ArrayList containing information about the user (username, password, email).
密钥将是用户名,值将是包含有关用户信息(用户名,密码,电子邮件)的ArrayList。 This class should provide a method to create a new user, which can be utilised from a PasswordDB class, which creates an Array of Users and their information by calling this method.
此类应提供一种创建新用户的方法,可从PasswordDB类中利用该方法,该类将通过调用此方法来创建用户及其信息的数组。
This is the code for the User class: 这是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;
}
}
And for the PasswordDB class: 对于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());
}
}
And I receive the following error in the PasswordDB class: error 而且我在PasswordDB类中收到以下错误: error
What am I doing wrong? 我究竟做错了什么? How can I make this work?
我该如何进行这项工作? Thanks.
谢谢。
You are trying to add a
HashMap
into theArrayList
!您正在尝试将
HashMap
添加到ArrayList
!
Try the following 尝试以下
public void newUser(String name ,String username ,String password ,String email)
{
User newUser = new User(name, username, password, email);
newUser.addUser();
database.add(newUser);
}
change your PasswordDB class: 更改您的PasswordDB类:
import java.util.ArrayList;
import java.util.HashMap;
public class PasswordDB
{
private ArrayList<HashMap<String, ArrayList<String>>> database;
private User newUser;
public PasswordDB()
{
database = new ArrayList<>();
}
public void newUser(String name ,String username ,String password ,String email)
{
User newUser = new User(name, username, password, email);
database.add(newUser.addUser());
}
}
You can simplify this program a lot. 您可以大大简化此程序。 A user does not need to know anything about any other user, so no list or database should be in the
User
class. 用户不需要了解任何其他用户,因此
User
类中不应包含任何列表或数据库。
Have a User
class that has properties for name, username, password, email and nothing else. 具有一个
User
类,该类具有名称,用户名,密码,电子邮件等属性。 It's just data about a user. 只是有关用户的数据。
Then a PasswordDB
class with your hashmap and just map a username to a user, you don't need all these extra lists. 然后使用带有哈希表的
PasswordDB
类,只需将用户名映射到用户,就不需要所有这些额外的列表。
class User {
private String name;
private String username;
// ..
public User(String name, String username, ...) {
this.name = name;
this.username = username;
// ...
}
public String getName() { return name; }
// .. more getters
}
public class PasswordDB {
private HashMap<String,User> userInfo = new HashMap<String,User>();
public void addUser(User newUser) {
userInfo.put(newUser.getUsername(), newUser);
}
// maybe you need to get a user by username
public User getUser(String username) {
return userInfo.get(username);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.