从哈希表中获取所有值

时间:2013-11-26 09:28:24

标签: java android hashtable

我正在开发一个Android项目,我必须从哈希表获取所有值,而不管密钥是什么。我的地图是

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

从这张地图中我根据产品名称加载了相关的Product 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]

可以这样做。需要帮忙。感谢.....

6 个答案:

答案 0 :(得分:2)

  

但我的问题是我可以将所有产品列表加载到单个ArrayList中,而不会涉及此哈希映射中的键值。

您正在寻找HashmMap

上的方法values()
  

返回此地图中包含的值的Collection视图。

所以它变成了

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

然后你可以迭代它

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

答案 1 :(得分:2)

  

我必须从散列表中获取所有值,无论密钥

使用map中的values()方法:

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

答案 2 :(得分:0)

只需使用值集迭代你的地图并添加到你的列表中。

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

while(iter.hashNext()){

//add to your list
}

答案 3 :(得分:0)

喜欢这个

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

答案 4 :(得分:0)

你将不得不迭代值:: 可能会有所帮助: Iterate through a HashMap

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

希望这有帮助!

答案 5 :(得分: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());   
            }

        }