如何为每个哈希映射?

这个问题在这里已经有了答案:

  • 如何有效地迭代'Map'中的每个条目? 38个答案

  • 我知道我对那个人有点晚了,但我会分享我的工作,以防别人帮助别人:

    HashMap<String, HashMap> selects = new HashMap<String, HashMap>();
    
    for(Map.Entry<String, HashMap> entry : selects.entrySet()) {
        String key = entry.getKey();
        HashMap value = entry.getValue();
    
        // do what you have to do here
        // In your case, another loop.
    }
    

    Lambda Expression Java 8

    在Java 1.8(Java 8)中,通过使用类似于Iterable Interface的迭代器的Aggregate操作( Stream操作 )中的forEach方法,这变得更容易。

    只需将下面的语句粘贴到您的代码中,并将HashMap变量从hm重命名为您的HashMap变量以打印出键值对。

    HashMap<Integer,Integer> hm = new HashMap<Integer, Integer>();
    /*
     *     Logic to put the Key,Value pair in your HashMap hm
     */
    
    // Print the key value pair in one line.
    hm.forEach((k,v) -> System.out.println("key: "+k+" value:"+v));
    

    以下是使用Lambda表达式的示例:

        HashMap<Integer,Integer> hm = new HashMap<Integer, Integer>();
        Random rand = new Random(47);
        int i=0;
        while(i<5){
            i++;
            int key = rand.nextInt(20);
            int value = rand.nextInt(50);
            System.out.println("Inserting key: "+key+" Value: "+value);
            Integer imap =hm.put(key,value);
            if( imap == null){
                System.out.println("Inserted");
            }
            else{
                System.out.println("Replaced with "+imap);
            }               
        }
    
        hm.forEach((k,v) -> System.out.println("key: "+k+" value:"+v));
    
    Output:
    
    Inserting key: 18 Value: 5
    Inserted
    Inserting key: 13 Value: 11
    Inserted
    Inserting key: 1 Value: 29
    Inserted
    Inserting key: 8 Value: 0
    Inserted
    Inserting key: 2 Value: 7
    Inserted
    key: 1 value:29
    key: 18 value:5
    key: 2 value:7
    key: 8 value:0
    key: 13 value:11
    

    同样可以使用Spliterator

    Spliterator sit = hm.entrySet().spliterator();
    

    UPDATE


    包括Oracle Docs的文档链接。 有关Lambda的更多信息,请转到此链接,并阅读Aggregate Operations和Spliterator转到此链接。


    Map.values()

    HashMap<String, HashMap<SomeInnerKeyType, String>> selects =
        new HashMap<String, HashMap<SomeInnerKeyType, String>>();
    
    ...
    
    for(HashMap<SomeInnerKeyType, String> h : selects.values())
    {
       ComboBox cb = new ComboBox();
       for(String s : h.values())
       {
          cb.items.add(s);
       }
    }
    
    链接地址: http://www.djcxy.com/p/17999.html

    上一篇: How to for each the hashmap?

    下一篇: extracting keys from treemap object