2012-10-03 31 views
0

我正在使用以下代碼將hashmap內容保存到arraylist中。如何在java中獲取arraylist的hashmap內容?

HashMap jediSaber = new HashMap(); 
ArrayList<HashMap> valuesList = new ArrayList(); 

for(int i = 0; i< 4;i++) { 
    jediSaber.put("white","white_name"+i); 
    jediSaber.put("blue","blue_name"+i); 
    valuesList.add(i, jediSaber);   
    System.out.println("list ontent:"+i+":"+valuesList.get(i).values()); 
} 

    ` 

輸出如下:

   list content:0:[blue_name0, white_name0] 
       list content:1:[blue_name1, white_name1] 
       list content:2:[blue_name2, white_name2] 
       list content:3:[blue_name3, white_name3] 

當我嘗試顯示的ArrayList在用下面的代碼之外的內容,

System.out.println("list content:"); 
for(int i = 0;i<valuesList.size();i++){ 
    System.out.println("list:"+i+":"+valuesList.get(i).values()); 
} 

它示出了以下的輸出,

   list content:0:[blue_name3, white_name3] 
      list content:1:[blue_name3, white_name3] 
      list content:2:[blue_name3, white_name3] 
      list content:3:[blue_name3, white_name3] 

我的問題是我需要顯示hashmap的arraylist的內容。

我覺得我錯過了第二部分。任何人都可以幫助我解決這個小問題嗎?

在此先感謝!!

回答

1

本是同HashMap每次加至ArrayList

valuesList.add(i, jediSaber); 

for中創建一個新的HashMap每次並將其添加:

List<HashMap<String, String>> valuesList = 
    new ArrayList<HashMap<String, String>>(); 

for (int i = 0; i < 4; i++) 
{ 
    HashMap<String, String> m = new HashMap<String, String>(); 
    m.put("white", "white_name" + i); 
    m.put("blue", "blue_name" + i); 
    valuesList.add(m); 
} 

System.out.println(valuesList.toString()); 
+0

感謝您的迴應。它的工作正常。已經在forloop中創建了hasmap並添加到了arraylist中。 – shiva

0

嘗試在您的for循環內拉動jediSaber,如下所示:

for(int i = 0; i < 4; i++) { 
    Map<String, String> jediSaber = new HashMap<String, String>(); 

你也應該參數valuesList太:

List<Map<String, String>> valuesList = new ArrayList<Map<String, String>>(); 

附:沒有必要使用索引參數調用add(i, jediSaber)valuesList.add(jediSaber)將具有相同的效果。

0
 List<Map> valuesList = new ArrayList(); 
     for (int i = 0; i < 4; i++) { 
      Map<Object, Object> jediSaber = new HashMap<>(); 
      jediSaber.put("white", "white_name" + i); 
      jediSaber.put("blue", "blue_name" + i); 
      valuesList.add(jediSaber); 
      Set<Entry<Object, Object>> entrySet = jediSaber.entrySet(); 
      for (Entry<Object, Object> entry : entrySet) { 
       System.out.println(entry.getKey() + "-" + entry.getValue()); 
      } 
     }