簡體   English   中英

將集合的集合添加到ArrayList

[英]Adding a collection of collections to an ArrayList

我正在嘗試制作一個程序,該程序采用帶有參數名,用戶名,密碼和電子郵件的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

我究竟做錯了什么? 我該如何進行這項工作? 謝謝。

您正在嘗試將HashMap添加到ArrayList

嘗試以下

public void newUser(String name ,String username ,String password ,String email)
  {
    User newUser = new User(name, username, password, email);
    newUser.addUser();
    database.add(newUser);
  }

更改您的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());
    }
}

您可以大大簡化此程序。 用戶不需要了解任何其他用戶,因此User類中不應包含任何列表或數據庫。

具有一個User類,該類具有名稱,用戶名,密碼,電子郵件等屬性。 只是有關用戶的數據。

然后使用帶有哈希表的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM