我正在开发一个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]
可以这样做。需要帮忙。感谢.....
答案 0 :(得分:2)
但我的问题是我可以将所有产品列表加载到单个ArrayList中,而不会涉及此哈希映射中的键值。
您正在寻找HashmMap
返回此地图中包含的值的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]
附加说明:如果要拼合任意深度的列表(使用递归),可以检查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());
}
}