【问题标题】:get all the values from a hash table从哈希表中获取所有值
【发布时间】:2013-12-11 08:33:40
【问题描述】:

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

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

我正在根据产品名称从这张地图加载相关的产品数组列表。

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]

这个可以吗。需要帮忙。谢谢.....

【问题讨论】:

标签: java android hashtable


【解决方案1】:

只需使用值集迭代您的映射并添加到您的列表中。

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

while(iter.hashNext()){

//add to your list
}

【讨论】:

  • 请看下面的ZouZou回答
  • 如何将哈希图中的产品值添加到 ArrayList 中。哈希图中的乘积值存储在 ArrayLists 中。那么如何将这些 ArrayLists 中的所有值放入 ArrayList。
【解决方案2】:

这样做

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

【讨论】:

    【解决方案3】:

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

    你在HashmMap上寻找方法values()

    返回此映射中包含的值的集合视图。

    原来如此

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

    然后你可以迭代它

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

    【讨论】:

      【解决方案4】:

      不管键,我都必须从哈希表中获取所有值

      使用地图中的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

      【讨论】:

      • 不是这个。我希望输出为[1,2,3,2,3,4]
      【解决方案5】:

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

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

      希望这会有所帮助!

      【讨论】:

      • 如何将哈希图中的产品值添加到 ArrayList 中。哈希图中的乘积值存储在 ArrayLists 中。那么如何将这些 ArrayLists 中的所有值放入 ArrayList。
      【解决方案6】:
              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());   
                  }
      
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-22
        • 2016-11-18
        • 2013-04-04
        • 1970-01-01
        • 2017-07-10
        相关资源
        最近更新 更多