无法在另一种方法中检索HashMap输入

时间:2011-04-02 17:02:30

标签: java collections map hashmap

我遇到了一个我无法弄清楚的小问题。

我有一个我在HashMap中使用的超类(SetupFunctions) - >

public HashMap<Integer, SetupFunctions> map =  new HashMap<Integer, SetupFunctions>();

所有其他类都扩展了SetupFunction。 我需要做160个方法来回收唯一数据,我需要将这些数据存储在一个地方以便稍后检查(这是一个自动化测试)。 这就是为什么我在HashMap中有类型SetupFuncition

因此,我使用构造函数实例化一个类,然后将其添加到hashmap中:

MyClass m = new MyClass (car1, var2, var3, var4, var5);
map.put(getCenarioID(), m);    

在同样的方法中,我添加了一些sysout只是为了看看发生了什么:

System.out.println(map.containsKey(1));
System.out.println(map.size());

正如预期的那样,它打印True和1 ...但是当我离开这个方法(方法的执行结束)并返回到main方法时,同样的sysout打印False和0。

我想知道为什么我的hashmap为空或重置...这不应该发生......我是对的吗?

2 个答案:

答案 0 :(得分:1)

很难说使用所提供的信息真正发生了什么。但似乎你可能正在使用两个不同的HashMap名为Map,一个在方法内,另一个在外面。

我认为你有两个(可能更多)名为Map的变量 - 一个是你的类的成员,而另一个是你的驱动程序类的元素(即声明main方法的类)或者主方法本身内的变量。

答案 1 :(得分:1)

Map是静态还是动态访问?这是你的主要能够正确访问它的唯一方式。确保没有可能使编译器混淆的重复变量Map

如果你可以在这里发布代码,那将是最好的。