java中的HashMap多层嵌套

 更新时间:2022年09月29日 09:53:20   投稿:jingxian  
这篇文章主要介绍了java中的HashMap多层嵌套问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

java HashMap多层嵌套

package chapter12;
import java.util.HashMap;
public class Demo03 {
    //班级  -组  -学生
    static HashMap<String,HashMap<String,HashMap<String,Integer>>> map= new HashMap<>();
    public static void main(String[] args) {
        HashMap<String,HashMap<String,Integer>> map50= new HashMap<>();
        HashMap<String,Integer> map50_1= new HashMap<>();
        map50_1.put("50_1_3",77);
        map50_1.put("50_1_2",88);
        map50_1.put("50_1_1",99);
        map50.put("第一组",map50_1);
        HashMap<String,Integer> map50_2= new HashMap<>();
        map50_2.put("50_2_3",75);
        map50_2.put("50_2_2",85);
        map50_2.put("50_2_1",95);
        map50.put("第二组",map50_2);
        map.put("通达50班",map50);
        HashMap<String,HashMap<String,Integer>> map51= new HashMap<>();
        HashMap<String,Integer> map51_1= new HashMap<>();
        map51_1.put("51_1_3",77);
        map51_1.put("51_1_2",88);
        map51_1.put("51_1_1",99);
        map51.put("第一组",map51_1);
        HashMap<String,Integer> map51_2= new HashMap<>();
        map51_2.put("51_2_3",75);
        map51_2.put("51_2_2",85);
        map51_2.put("51_2_1",95);
        map51.put("第二组",map51_2);
        map.put("通达51班",map51);
        HashMap<String,HashMap<String,Integer>> map52= new HashMap<>();
        HashMap<String,Integer> map52_1= new HashMap<>();
        map52_1.put("52_1_3",77);
        map52_1.put("52_1_2",88);
        map52_1.put("52_1_1",99);
        map52.put("第一组",map52_1);
        HashMap<String,Integer> map52_2= new HashMap<>();
        map52_2.put("52_2_3",75);
        map52_2.put("52_2_2",85);
        map52_2.put("52_2_1",95);
        map52.put("第二组",map52_2);
        map.put("通达52班",map52);
        map.forEach((className,cMap)->{
            System.out.println(className+"信息展示:");
            System.out.println("*******************************");
            cMap.forEach((group,gMap)->{
                System.out.println(className+group);
                gMap.forEach((name,score)->{
                    System.out.println("姓名:"+name+"\t分数:"+score);
                });
            });
            System.out.println("*****************************");
        });
//        forEach();
    }
//    public static void forEach(){
//        map.forEach((className,cMap)->{
//            System.out.println(className+"信息展示:");
//            System.out.println("*******************************");
//            cMap.forEach((group,gMap)->{
//                System.out.println(className+group);
//                gMap.forEach((name,score)->{
//                    System.out.println("姓名:"+name+"\t分数:"+score);
//                });
//            });
//            System.out.println("*****************************");
//        });
//    }
}

三层HashMap的嵌套

package cn.itcast_04;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;
/*
 * 三层HashMap的嵌套
 * 
 * 动漫小说
 *    dm   动漫区
 *               rm  日漫:
 *                        漩涡鸣人        27
 *                        宇智波佐助      30
 *               gm  国漫:
 *                        闻人翊          29
 *                        张楚岚          29
 *    xs   小说区
 *               xh  玄幻:
 *                        狠人大帝      25
 *                        林动          32
 *               qh   奇幻
 *                         唐三       21
 *                         比比东     42
 */
public class 集合的多层嵌套 {
	public static void main(String[] args) {
		
		//创建集合1     
		HashMap<String,HashMap<String,ArrayList<Student>>> dx  = 
								new HashMap<String,HashMap<String,ArrayList<Student>>>();
		
		//创建动漫区
		 HashMap<String,ArrayList<Student>> dm = new   HashMap<String,ArrayList<Student>> ();
		   //创建日漫集合
		     ArrayList<Student> array1 = new ArrayList<Student>();
		        //创建并添加数据
			    Student s1 = new Student("漩涡鸣人 ",27);
				Student s2 = new Student("宇智波佐助 ",30);
		        array1.add(s1);
		        array1.add(s2);
		  //创建国漫集合
		    ArrayList<Student> array2 = new ArrayList<Student>();
		       //创建并添加数据
		       Student s3 = new Student("闻人翊",29);
			   Student s4 = new Student("张楚岚  ",29);
			   array2.add(s3);
			   array2.add(s4);
		 //添加
			   dm.put("日漫", array1);
			   dm.put("国漫", array2);
		
			   
	   //创建小说区
			HashMap<String,ArrayList<Student>> xs = new   HashMap<String,ArrayList<Student>>();
	     //创建玄幻集合
			ArrayList<Student> array3 = new ArrayList<Student>();
			   //创建并添加数据
			  Student s5 = new Student("狠人大帝 ",25);
			  Student s6 = new Student("林动  ",32);
			   array3.add(s5);
			   array3.add(s6);
			   //创建奇幻集合
			   ArrayList<Student> array4 = new ArrayList<Student>();
			   //创建并添加数据
			    Student s7 = new Student("唐三 ",21);
				Student s8 = new Student("比比东 ",42);
			    array4.add(s7);
				array4.add(s8);	
		//添加
				xs.put("玄幻", array3);
				xs.put("奇幻", array4);
				
				dx.put("动漫", dm);
				dx.put("小说", xs);
				
				
		//遍历
				Set<String>  hmset=  dx.keySet();
				for(String hmkey:hmset) {
					System.out.println(hmset);
					HashMap<String,ArrayList<Student>> hmvalue = dx.get(hmkey);
					    Set<String>  hm1set=  hmvalue.keySet();
					for(String hm1key:hm1set) {
						System.out.println("\t"+hm1set);
						  ArrayList<Student> value = hmvalue.get(hm1key);
						 for(Student s:value) {
							 System.out.println("\t\t"+s.getName()+"-------"+s.getAng());
						 }
					}
				}						     		    
	}
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java中@Autowired与@Resource注解的区别详解

    Java中@Autowired与@Resource注解的区别详解

    这篇文章主要介绍了Java中@Autowired与@Resource注解的区别详解,@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了,@Resource有两个属性是比较重要的,需要的朋友可以参考下
    2023-11-11
  • java如何写接口给别人调用的示例代码

    java如何写接口给别人调用的示例代码

    这篇文章主要介绍了java如何写接口给别人调用的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • idea社区版如何设置vm options

    idea社区版如何设置vm options

    这篇文章主要介绍了idea社区版如何设置vm options问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • SpringBoot 分模块开发的操作方法

    SpringBoot 分模块开发的操作方法

    这篇文章主要介绍了SpringBoot 分模块开发的操作方法,通过在原项目新增一个maven模块,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • 解决idea中svn提交时performing vcs refresh时间很长的问题

    解决idea中svn提交时performing vcs refresh时间很长的问题

    这篇文章主要介绍了解决idea中svn提交时performing vcs refresh时间很长的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Java有哪些操作字符串的类?区别在哪?

    Java有哪些操作字符串的类?区别在哪?

    今天给大家爱带来的是关于Java的相关知识,文章围绕着Java操作字符串的类展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • datax-web在windows环境idea中模块化打包部署操作步骤

    datax-web在windows环境idea中模块化打包部署操作步骤

    这篇文章主要介绍了datax-web在windows环境idea中模块化打包部署操作步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05
  • spring整合JMS实现同步收发消息(基于ActiveMQ的实现)

    spring整合JMS实现同步收发消息(基于ActiveMQ的实现)

    本篇文章主要介绍了spring整合JMS实现同步收发消息(基于ActiveMQ的实现),具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • 浅谈Java中Unicode的编码和实现

    浅谈Java中Unicode的编码和实现

    这篇文章向大家介绍了Java编程中Unicode编码及实现的相关内容,列举了几个字符不同表达式的比较,以及Unicode平面映射的知识,具有一点点参考价值,需要的朋友可以了解下。
    2017-10-10
  • spring使用JavaConfig进行配置的方法

    spring使用JavaConfig进行配置的方法

    这篇文章主要介绍了spring使用JavaConfig进行配置的方法,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2021-09-09

最新评论