2014-03-27 14 views
5

我有時在調試時遇到過這種困難的情況。我有一個Java HashMap,其中包含許多條目,並且該程序無法按預期工作,因爲它表示地圖不包含特定條目,但該條目應該位於地圖中。但是,我無法調試到地圖。在Eclipse中,我可以在變量中看到Map的內部結構,但給定這麼多條目時,很難對地圖中的所有條目進行眼睛掃描,以查看該條目是否在地圖中。如何調試到地圖?

有沒有更好的方法來調試這種類型的情況?爲你提供見解和想法。

+1

+1問題和答案。但是,在與你的實際問題相關的切線上,你是否爲密鑰重寫了'hashCode'和'equals'? – yshavit

回答

3

大多數調試器允許您評估,而坐在一個調試斷點的表達,和Eclipse也不例外(見Eclipse help - Evaluating expressions)。只需評估myMap.get(theKey)以查看條目是否在地圖中。

另一種選擇是,大多數調試器示出了在變量視圖中的對象的toString()值。如果地圖沒有太多條目,那麼您應該能夠看到地圖中的所有條目。

+0

是的,當map.get(key)返回null時,我想確保它確實不包含密鑰。有時候我只是想看看地圖中的每個元素。 – user697911

+0

@ user697911:首先,'map.get(key)'並不意味着地圖不包含關鍵字;它可以明確地將'key'映射到'null'。但是根據定義,無論內部是什麼,對於'map.containsKey(key)'返回false的映射都沒有密鑰。 –

0

有一個名爲「ArrayExplorer」插件(不只是陣列可以探索任意集合)。我還沒有嘗試過,但視頻看起來像這可能是你正在尋找的。