zoukankan      html  css  js  c++  java
  • 集合嵌套

    集合嵌套并不是一个新的知识点,仅仅是集合内容又是集合,如Collection集合嵌套、Collection集合与Map集合相互嵌套、Map集合嵌套。

    l  ArrayList嵌套 ArrayList

         ArrayList< ArrayList<String>>

         Collection< ArrayList<Integer>>

    l  Map嵌套 ArrayList

    HashMap<String, ArrayList<Person>>

    ArrayList< HashMap<String, String>>

    l  Map集合嵌套

    HashMap<String, HashMap<String,String>>

    HashMap<String, HashMap<Person,String>>

    集合嵌套遍历:

    package com.oracle.xunhuan;
    
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Set;
    
    import com.oracle.Demo01.Person;
    
    public class workf_1 {
        public static void main(String[] args) {
            //外内
            HashMap<String,HashMap<Person,String>>  k =new HashMap<String,HashMap<Person,String>>();
            //添加数据 先添加值
            HashMap<Person,String> n1=new HashMap<Person,String> ();
            HashMap<Person,String> n2=new HashMap<Person,String> ();
              n1.put(new Person("鸡肉卷",25),"1");
              n1.put(new Person("咖喱鸡",14),"2");
              n2.put(new Person("汉堡王",23),"3");
              n2.put(new Person("牛肉包",10), "4");
             //添加数据    添加键,值。
              k.put("鸡肉",n1);
              k.put("汉堡",n2);
              
              
              
       //遍历  keyset+增强for
              //获取最外层key
              Set<String> ka=k.keySet();
              for(String s:ka) {
                  //用外层key获取内层的集合
                  String  keyw=s;
                  //利用外层的key值,获取到里面的自定义集合
                HashMap<Person,String> valuen=k.get(keyw);
                //获取内层的key值
                Set<Person> wa=valuen.keySet();
                for(Person t:wa) {              
                    System.out.println(keyw+".."+t+"."+valuen.get(t));              
                }      
              }
              
              /*迭代器循环打印*/
              /*获取集合中的元素
               * iteger循环遍历*/
              //1.获取外层key值循环打印2.利用外层key值得到value(内层集合)3.
              //1.获取外层key值,迭代器 循环打印
              Set<String> key2=k.keySet();
              //迭代器
              Iterator<String> ded=key2.iterator();
              //循环打印
              while(ded.hasNext()) {
                  //得到每一个key值
                  String key3=ded.next();
                  //利用key值获得 value的内集合
               HashMap<Person,String>  value2=k.get(key3);
               //获得 内集合的key值
               Set<Person> key4=value2.keySet();
               /*循环遍历,获得迭代器*/
               Iterator<Person> ded1=key4.iterator();
               /*循环打印*/
               while(ded1.hasNext()) {
                   //得到内集合的每个key值
                   Person nkey=ded1.next();
                   System.out.println(key3+"...   "+nkey+"..."+value2.get(nkey));              
               }
              }
            /* 增强FOR+entry   entry键值是一对对的。不在分离*/
              //获取大集合中的key与value值
              Set< HashMap.Entry<String,HashMap<Person,String>>>sr=k.entrySet();
              //循环得到  key,value
              for( HashMap.Entry<String,HashMap<Person,String>> p:sr) {
                  /*获得key值*/
                  String  entry_key=p.getKey();
                  /*获得value值*/
               HashMap<Person,String> entry_value=p.getValue();
                 /*获得内层集合的key,value值*/
               Set<HashMap.Entry<Person,String>> sc=entry_value.entrySet();
                  for(HashMap.Entry<Person,String> c:sc) {
                      Person entry_key2=c.getKey();
                      String  entry_value2=c.getValue();
                      System.out.println(entry_key+".   ."+entry_key2+".."+entry_value2);
                      
                  }
              }
              /*迭代器+entry遍历*/
              
              /*获取大集合的key值*/
             Set< HashMap.Entry<String,HashMap<Person,String>>>st=k.entrySet();
             /*获取大集合的迭代器*/
              Iterator<HashMap.Entry<String,HashMap<Person,String>>> std=st.iterator();
            while(std.hasNext()) {
                //获得大集合的key值
               HashMap.Entry<String,HashMap<Person,String>> Iterator_ded=std.next();
               //提取key值
               String Iterator_key= Iterator_ded.getKey();
               //提取value值
               HashMap<Person,String> Iterator_value=Iterator_ded.getValue();
               /*利用大集合的key值获得内层集合的key,value值*/
               Set<HashMap.Entry<Person,String>> stc=Iterator_value.entrySet();
              /*获取内层集合的迭代器*/
             Iterator<HashMap.Entry<Person,String>> nd=stc.iterator();
                while(nd.hasNext()) {
                    //获得内层的每个key值
                   HashMap.Entry<Person,String> Iterator_nd=nd.next();
                   //提取内层的key值
                   Person nckey=Iterator_nd.getKey();
                   //提取能蹭的value值
                   String ncvalue=Iterator_nd.getValue();
                   System.out.println(Iterator_key+"__"+nckey+"--"+ncvalue);
                }
            }
           
    }
    }



  • 相关阅读:
    广陵基地输电线路实训场
    广陵基地配电网综合实训室
    广陵基地电缆实训室
    Windows Phone 9再见了!
    Windows Phone 8初学者开发—第23部分:测试并向应用商店提交
    Windows Phone 8初学者开发—第22部分:用演示图板创建卷盘的动画
    JDBC数据类型
    Java-BlockingQueue的使用
    苹果下如果安装nginx,给nginx安装markdown第三方插件
    苹果电脑包管理
  • 原文地址:https://www.cnblogs.com/layuechuquwan/p/11444776.html
Copyright © 2011-2022 走看看