2011-04-02 56 views
0

我遇到了一個我無法弄清楚的小問題。不能以另一種方法檢索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);  

在同樣的方法,我添加了一些系統輸出只是爲了看看發生了什麼:

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

正如所料,它打印True和1 ...但是,當我離開這種方法(方法執行結束)並返回到主方法,相同的sysout打印False和0.

我想知道爲什麼我的散列表是空的或重置...這不認爲發生...我是對的嗎?

+1

你的'Map'變量位於哪裏?將MyClass放入地圖的主要方法和方法是否真的使用相同的變量?你能否產生一個顯示相同行爲的短代碼,以便你和我們能夠找出發生的事情? – 2011-04-02 17:12:14

+0

這將是有益的,如果你張貼的代碼和其他方法 – Premraj 2011-04-02 19:21:50

回答

1

使用所提供的信息很難說真的在發生什麼。但似乎你可能使用了兩個不同的HashMap s,其名稱爲Map,其中一個在方法內部,另一個在外部。

我認爲你有兩個(可能更多)變量名爲Map - 一個是你的類的成員,而另一個是你的驅動類的一個元素(即你的主方法聲明的類)或一個變量主要方法本身。

+0

哦,我雖然我編輯了問題,但我找到了解決方案。 我是調試,我發現填充HashMap的方法被稱爲非靜態istance(對象我=新的對象()),當實例完成時,它使用哈希映射..所以我改變調用代碼,現在它奇蹟般有效。你的人! – Leonardo 2011-04-07 22:20:45

1

Map靜態還是被動態訪問?這是您的主體可以正確訪問它的唯一方法。確保沒有重複的變量Map可能會讓編譯器感到困惑。

如果你可以在這裏發佈代碼,那將是最好的。

相關問題