2013-11-26 136 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()); 
      } 

     }