如何创建每个类型具有不同名称的ArrayList?

时间:2014-12-12 19:57:48

标签: java arrays

我是编程新手,我目前正在学习Java。在这种情况下,我使用ArrayList创建字符串数组以将消息存储到特定的“帐户”。每当有人在我的程序中注册一个帐户时,我希望它创建一个新的ArrayList来存储发送给它们的消息。它本质上使用Buffered Reader来获取用户名,然后使用用户刚刚输入的名称创建一个ArrayList。 我不确定这是否可能,所以这就是为什么我要事先提出谢谢。

String username = bufferedReader.readLine();
ArrayList<String> "username" = new ArrayList<String>();

3 个答案:

答案 0 :(得分:2)

我首先建议您注意这样一个事实,即您将这些对象称为帐户 - 这表明您应该很可能拥有Account类型,其中包含List<String>消息。除此之外,这意味着您也可以开始向帐户添加更多信息。

接下来,您无法动态提供变量名称...但如果您希望能够拥有多个帐户并快速通过用户名找到它们,那听起来就像Map<String, Account>。可能值得在Account内使用其他字段的用户名。

所以你会有类似的东西:

// Early on
Map<String, Account> accountsByUsername = new HashMap<>();

// Then in a loop, or whatever
String username = bufferedReader.readLine();
accountsByUsername.put(username, new Account(username));

稍后,您可以通过以下方式获取给定用户名的帐户:

Account account = accountsByUsername.get(username);
// Now account will be null (no such user), or a reference to the user's account.

答案 1 :(得分:1)

您所看到的可能是Mapping ArrayList的用户名

类似的东西:

Map<String, List<String>> map = new HashMap<>();

这样你可以像这样使用它:

String username = bufferedReader.readLine();
List<String> currentUser = map.get(username);
if(currentUser == null) {
    currentUser = new ArrayList<>();
} 

//do whatever you need to do with the List      
map.put(username, currentUser);

答案 2 :(得分:0)

您无法在运行时定义变量。您可以定义地图并保存列表。稍后,您可以迭代地图并检索每个用户的列表。

Map<String, List<String> map = new HashMap<>(); map.put(username, list);