2012-05-11 26 views
-5

我正在迭代hashmap,但這些奇怪的括號[]在那裏迭代,任何機構可以指導我如何擺脫它。具有「[」「]」這些符號在Java中的哈希圖

感謝

Iterator it = map.entrySet().iterator(); 

      while (it.hasNext()) { 

       Map.Entry pairs = (Map.Entry)it.next();     
       System.out.println(pairs.getKey() + " = " + pairs.getValue());      
       Log.v("Pairs get key", pairs.getKey().toString()); 
       Log.v("Pairs get value", pairs.getValue().toString()); 
       mysection.add(pairs.getKey().toString()); 
       temp.add(pairs.getValue().toString()); 

       it.remove(); // avoids a ConcurrentModificationException 

      } 
+2

對不起,你還沒有提供足夠的詳細信息。代碼示例和示例輸出將會很有幫助。 –

+1

你能發佈你正在使用的代碼嗎?哈希映射在轉換爲字符串時有括號括起來。 – Vulcan

+0

括號內的一些上下文將大有幫助。請粘貼包含這些括號的行 –

回答

-1

好的,我得到了答案,問題是地圖顯示到控制檯時會顯示,[]符號。所以爲了避免它使用另一個實現來遍歷map而不是這個。

1

我要去哪裏的代碼不使用泛型和在那裏你實際上並沒有給我們帶來的「意外」的輸出,使我們可以來找出粉飾部分是什麼問題是,真的,列出三種情況,你可以得到「這些奇怪的符號」:

  1. 地圖的鍵或值是某種類型的集合。然後該集合的toString方法將打印其內容,例如, [1][1,2,3]
  2. 地圖的鍵或值是一些東西的數組。然後ObjecttoString方法將打印對象類型和地址,例如, [Ljava.lang.String;@19821f是一個字符串數組。
  3. 地圖的鍵或值爲String s,其中[] s或其他toString方法打印[] s的其他類型的對象。
1

我跑了代碼。

Map<String, String> map = new HashMap<String, String>(); 
    map.put("AAAA", "11111"); 
    map.put("BBBB", "22222"); 
    map.put("CCCC", "33333"); 

    Iterator<Entry<String,String>> it = map.entrySet().iterator(); 

    while (it.hasNext()) { 
     Entry<String, String> pairs = it.next();     
     System.out.println(pairs.getKey() + " = " + pairs.getValue());      
     System.out.println("Pairs get key: "+pairs.getKey().toString()); 
     System.out.println("Pairs get value: "+pairs.getValue().toString()); 
     it.remove(); // avoids a ConcurrentModificationException 
    } 

產量爲

AAAA = 11111 
Pairs get key: AAAA 
Pairs get value: 11111 
BBBB = 22222 
Pairs get key: BBBB 
Pairs get value: 22222 
CCCC = 33333 
Pairs get key: CCCC 
Pairs get value: 33333 

唯一的區別是,我不知道你的數據在地圖上推杆。如果你放置一個List,它將以[]符號輸出,因爲java將會打印它的toString()方法,這就是列表顯示的方式。