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