2013-11-26 134 views
0

我正在開發一個Android項目,其中我必須從散列表中獲取所有值,而不管密鑰如何。我的地圖是獲取散列表中的所有值

HashMap<String, ArrayList<MyProduct>> orderAdap = InvocieProductFragment.mapOrderd; 

而從這個地圖我根據產品名稱加載培訓相​​關產品的ArrayList。

ArrayList<MyProduct> lstStyle = orderAdap.get(lstBrandCode.get(position)); 

但我的問題是,我可以加載所有的產品清單到一個單一的ArrayList沒有在這個哈希映射有關鍵值

例如想象我的哈希映射是這樣的。

[ss,[p1,p2,p3]],[we,[p3,p4]],[rf,[p1,p4,p5,p7,p9]] 

,我需要輸出作爲

[p1,p2,p3,p3,p4,p1,p4,p5,p7,p9] 

可以這樣做。需要幫忙。謝謝.....

+0

可能重複[從地圖列表值(http://stackoverflow.com/questions/13679427/get-value-from-map-list) –

回答

2

我得從哈希表中的所有值不管鍵

使用values()我從地圖的ThOD:

Map<String, List<Integer>> m = new HashMap<>(); 
m.put("test", new ArrayList<Integer>(Arrays.asList(1,2,3))); 
m.put("test2", new ArrayList<Integer>(Arrays.asList(2,3,4))); 

List<List<Integer>> l = new ArrayList<>(m.values()); 
System.out.println(l); 

輸出:

[[1, 2, 3], [2, 3, 4]] 

編輯: 擁有一個弄平List

 List<Integer> flattenList = new ArrayList<>(); 
     for(List<Integer> list : m.values()){ 
      for(Integer i : list) 
       flattenList.add(i); 
     } 
     System.out.println(flattenList); 

輸出:

[1, 2, 3, 2, 3, 4] 

Demo here

附加說明:您可以檢查this如果你想變平的任意深度的列表(使用遞歸)

+0

不是這個。我想輸出爲'[1,2,3,2,3,4]' –

+0

可以這樣做。 –

+0

@SamanthaWithanage檢查我的編輯。 –

0

只是迭代你使用值集映射並添加到您的列表。

java.util.Iterator iter = hm.valueSet().iterator(); 

while(iter.hashNext()){ 

//add to your list 
} 
+0

看到ZouZou回答以下 –

+0

我怎樣才能添加將哈希映射中的產品值轉換爲ArrayList。哈希映射中的產品值存儲在ArrayLists中。那麼如何將這些ArrayLists中的所有值存入ArrayList。 –

0

做這樣

Collection<ArrayList<MyProduct>> values = orderAdap.values(); 
2

但我的問題是,我可以加載所有的產品清單到一個單一的ArrayList沒有在這個哈希地圖有關的鍵值。

您在HashmMap

尋找方法values()返回包含在此映射中的值的Collection視圖。

因此,原來

Collection<ArrayList<MyProduct>> allValuesCollection = orderAdap.values(); 

然後你可以遍歷它

for (ArrayList<MyProduct> eachList : allValuesCollection) { 
      //play with eachList 
     } 
0

你將不得不遍歷值:: 可能,這將幫助: Iterate through a HashMap

for (Object value : map.values()) { 
    // ... add values to lstStyle without worring about key 
} 

希望這有助於!的

+0

如何將哈希映射中的產品值添加到ArrayList中。哈希映射中的產品值存儲在ArrayLists中。那麼如何將這些ArrayLists中的所有值存入ArrayList。 –

0
 MyProduct myProduct1 = new MyProduct(); 
     myProduct1.setProductId(1); 
     myProduct1.setProductName("asm"); 

     MyProduct myProduct2 = new MyProduct(); 
     myProduct2.setProductId(2); 
     myProduct2.setProductName("tsm"); 

     MyProduct myProduct3 = new MyProduct(); 
     myProduct3.setProductId(2); 
     myProduct3.setProductName("rsm"); 

     List<MyProduct> productList1 = new ArrayList<>(); 
     productList1.add(myProduct1); 
     productList1.add(myProduct2); 

     List<MyProduct> productList2 = new ArrayList<>(); 
     productList2.add(myProduct3); 

     Map<String, List<MyProduct>> map = new HashMap<String, List<MyProduct>>(); 
     map.put("First", productList1); 
     map.put("Second", productList2); 


     Collection<List<MyProduct>> listOfList = map.values(); 

     for(List<MyProduct> list : listOfList){ 
      for(MyProduct product: list){ 
       System.out.println(""+ product.getProductName()); 
      } 

     }