2012-12-14 53 views
0

我已經編寫代碼在HashMap中查找唯一變量,但它似乎不起作用?我希望能夠打印每種香腸類型的頻率。如何檢查一個HashMap的唯一變量?

if(sausagesEaten.isEmpty()) { //if the HashMap is empty 
     System.out.println("No sausages have been eaten"); 
     System.out.println("======================================================="); ; 
    } 
    else{ 
     HashMap<ArrayList, String> sausagesEaten = new HashMap<ArrayList, String>(); 
     for (String key : sausagesEaten) { 
       System.out.println(key + ": " + Collections.frequency(saustype, key)); 
     } 
     System.out.println(" "); 
    } 
+3

目前尚不清楚你在這裏尋找什麼。 'ArrayList'鍵類型的含義是什麼?什麼是「saustype」?你是否試圖遍歷'HashMap'的值,鍵或者什麼? –

+3

你的鑰匙是一個列表。你有另一種方式得到你的hashmap – UmNyobe

+0

總而言之,arrarylist是一個列表,如牛肉,雞肉等香腸類型 –

回答

0

假設您的代碼中已經有一個名爲sausagesEaten的填充HashMap。

變化:

if(sausagesEaten.isEmpty()) { //if the HashMap is empty 
    System.out.println("No sausages have been eaten"); 
    System.out.println("======================================================="); ; 
} 
else{ 
    HashMap<ArrayList, String> sausagesEaten = new HashMap<ArrayList, String>(); 
    for (String key : sausagesEaten) { 
      System.out.println(key + ": " + Collections.frequency(saustype, key)); 
    } 
    System.out.println(" "); 
} 

要:

if(sausagesEaten.isEmpty()) { //if the HashMap is empty 
    System.out.println("No sausages have been eaten"); 
    System.out.println("======================================================="); ; 
} 
else{ 
    for (String key : sausagesEaten) { 
      System.out.println(key + ": " + Collections.frequency(saustype, key)); 
    } 
    System.out.println(" "); 
} 

通過重新聲明變量是局部範圍自動清空。

編輯:添加更改適當的迭代。

Iterator it = sausagesEaten.entrySet().iterator(); 
while (it.hasNext()) { 
    Map.Entry pairs = (Map.Entry)it.next(); 
    System.out.println(pairs.getKey() + " = " + pairs.getValue()); 
} 
+0

我收到錯誤消息「for-each不適用於表達式類型。必需:Array或java.lang.iterable; found; java.util.HashMap 」 –

0

您不能直接遍歷HashMap。這裏是你可以做什麼:

Map<K,V> map = new HashMap<K,V>(); // whatever K and V are 

for (K key : map.keySet()) 
{ 
    // iterates over all the keys in random order 
} 

for (V value : map.values()) 
{ 
    // iterates over all the values, in random order 
} 

此外,這是非常非正統的和危險的使用可變對象,如ArrayList作爲地圖的關鍵,因爲在

HashMap<ArrayList, String> sausagesEaten = new HashMap<ArrayList, String>(); 

後你把它進入地圖,如果你以任何方式修改它的內容,你會打破地圖,可能會或可能無法檢索它。我覺得你的意思

HashMap<String, ArrayList> sausagesEaten = new HashMap<String, ArrayList>(); 

而且,在你的代碼的else子句中重新申報sausagesEaten,隱藏了同名的成員變量。

相關問題