2014-02-25 42 views
0

我想用hashmaps找出第一個重複的單詞,但我無法理解爲什麼沒有創建「映射」。我調試並在調試器中看不到地圖變量。類變量不在調試器中

import java.util.HashMap; 
import java.util.Map; 


public class HashMapTest { 

static HashMap<String,Integer> map = new HashMap<String, Integer>(); 


Boolean findRepeat(String word){ 
    if(map.containsKey(word) && map.get(word) > 1){ 
     return true; 
    } 
    else map.put(word, map.containsKey(word) ? map.get(word)+1:1); 
    return false; 
} 


public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    HashMapTest hash = new HashMapTest(); 
    for(Map.Entry<String, Integer> entry : hash.map.entrySet()){ 
     System.out.println(entry.getKey()); 
     System.out.println(entry.getValue()); 

    } 


    String[] arr = "I am a disco dancer you are not a dancer".split(" "); 

    for (String word : arr){ 

     if(hash.findRepeat(word)) System.out.println(word); 
    } 

} 

}

+0

**我調試,看到在調試器沒有地圖的變量。**,你可以告訴你究竟是如何做到這一點?哪個IDE? – sanbhat

+0

我用eclipse,注意到沒有'地圖'變量 – shank

回答

0

的Hashmap不能包含重複鍵(HashMap的)

,並在你的情況if(map.containsKey(word) && map.get(word) > 1)將始終返回false 應該if(map.containsKey(word) && map.get(word) == 1)

+0

是的,解決了。對我來說太愚蠢了。然而,我的注意力轉移到爲什麼'地圖'成員沒有在Eclipse IDE調試器中顯示。你能幫助嗎? – shank

0

問題是在findRepeat。重複將是如果你已經有任何給定項的條目,所以你需要用

if(map.containsKey(word) && map.get(word) > 0){ 

你需要檢查,如果地圖有任何文字到現在替換此條件

if(map.containsKey(word) && map.get(word) > 1){ 

希望這有助於