Java:我应该如何将每个用户的东西存储在内存中

时间:2011-03-28 22:05:07

标签: java memory data-structures storage

我需要将特定于用户名的值存储到内存中,我正在考虑动态命名变量等内容,以便我可以执行类似

的操作
["bubby4j_falling"] = true;

并按

索引
["bubby4j_falling"]

但是,这只是一个例子,我知道这不会起作用,我只想要一种方法来快速简单地动态地存储和存储东西。

2 个答案:

答案 0 :(得分:7)

您希望使用包含字符串键的Map,例如HashMap<String, something>

您的示例如下所示:

Map<String, Boolean> map = new HashMap<String, Boolean>();
map.put("bubby4j_falling", true);

if(map.get("bubby4j_falling")) {
    ...
}

实际上,在您的情况下,Set<String>会更有用:

Set<String> fallingUsers = new HashSet<String>();
fallingUsers.add("bubby4j");

if(fallingUsers.contains("bubby4j")) { ... }

但是如果你已经拥有User个对象(你应该这样做),你应该更好地使用Set<User>,甚至让这个falling只是用户对象的属性。然后,您可以使用Map<String, User>按名称获取用户对象。

答案 1 :(得分:1)

@PaŭloEbermann的回答很明显。

我只想指出Java语言没有类似于动态变量的东西。所有Java变量名称及其类型都在Java源代码中声明。甚至反射都不允许您在现有类中动态创建新变量。

Java被设计为一种静态编程语言,如果你以这种方式使用它,效果最好。

(理论上,如果你搞乱了源代码或字节码生成技术,你可以动态创建一个带有新变量的新类。但是,这涉及大量的工作,而不是一个明智的程序员考虑做的事情解决一个简单的问题。此外,我怀疑这种方法在你的特定情况下确实会有所帮助。)