集合框架(HashMap嵌套HashMap案例-----HashMap集合嵌套ArrayList集合案例----ArrayList嵌套HashMap集合案例-----HashMap和ArrayList多层嵌套)
/*
* 1:Hashtable和HashMap的区别?
* Hashtable:线程安全,效率低。不允许null键和null值
* HashMap:线程不安全,效率高。允许null键和null值
*
* 2:List,Set,Map等接口是否都继承子Map接口?
* List,Set不是继承自Map接口,它们继承自Collection接口
* Map接口本身就是一个顶层接口
*/
package cn.itcast_07; import java.util.Hashtable; /* * 1:Hashtable和HashMap的区别? * Hashtable:线程安全,效率低。不允许null键和null值 * HashMap:线程不安全,效率高。允许null键和null值 * * 2:List,Set,Map等接口是否都继承子Map接口? * List,Set不是继承自Map接口,它们继承自Collection接口 * Map接口本身就是一个顶层接口 */ public class HashtableDemo { public static void main(String[] args) { // HashMap<String, String> hm = new HashMap<String, String>(); Hashtable<String, String> hm = new Hashtable<String, String>(); hm.put("it001", "hello"); // hm.put(null, "world"); //NullPointerException // hm.put("java", null); // NullPointerException System.out.println(hm); }
HashMap输出顺序就是存储的顺序
HashMap嵌套HashMap案例
package Day18; import java.util.HashMap; import java.util.Set; //HashMap嵌套 /* * czbk--集合 * jc(键)---集合 * 键 键值 * (键值) 刘备 22 * 曹操 23 * * * jy键---集合 * 键值 键 键值 * 孙权 24 * 司马徽 25 * */ public class Map9 { public static void main(String[] args) { //首先创建czbkHashMap集合 HashMap<String,HashMap<String,Integer>> czbk = new HashMap<String,HashMap<String, Integer>>(); //创建jc集合对象 HashMap<String,Integer> jc = new HashMap<String,Integer>(); //首先给jc集合添加键值对对象 jc.put("刘备",22); jc.put("曹操",23); //此时的jc集合的内的键值对对象创建完毕 //此时将jc作为键jc集合的内容作为值--添加到czbk集合中 czbk.put("jc",jc); //创建jy集合对象 HashMap<String,Integer> jy = new HashMap<String,Integer>(); //向jy(就业)集合中添加键值对对象 jy.put("孙权",23); jy.put("司马徽",24); //此时的jy集合的键值对已经添加完毕 //将jy作为键jy键值对对象作为键值--添加到czbk集合中 czbk.put("jy",jy); //此时的czbk集合中已经有了连个键和对应的键值--此时输出遍历这两个键 //首先创建czbk集合的键集合 Set<String> czbkset = czbk.keySet(); //遍历czbk集合中的键 for(String czbkkey: czbkset){ //利用键来获取对应的键值 //输出查看集合中的键 System.out.println(czbkkey); HashMap<String,Integer> jcmap = czbk.get(czbkkey); //我们发现键值中还有键值对对象---其中的键是String类型键值是Integer类型 //再次定义一个键集合 Set<String> jcset = jcmap.keySet(); //遍历键集合来获取每个键 for(String jckey:jcset){ //遍历的键来获取每个键值 Integer jcvalue = jcmap.get(jckey); //然后输出查看 System.out.println("\t"+jckey+"--"+jcvalue); } } } }
HashMap集合嵌套ArryList集合案例
package Day18; import java.util.ArrayList; import java.util.HashMap; import java.util.Set; /* * HashMap集合嵌套ArrayList * 每一个ArrayList集合都是字符串类型 * 元素为 * 三国演义 * 诸葛亮 * 司马懿 * 西游记 * 孙悟空 * 唐僧 * 水浒传 * 武松 * 宋江 * */ public class Map10 { public static void main(String[] args) { //创建HashMap集合 HashMap<String, ArrayList<String>> SM = new HashMap<String, ArrayList<String>>(); //创建ArrayList集合 ArrayList<String> A = new ArrayList<String>(); //将字符元素添加到集合中 A.add("诸葛亮"); A.add("司马懿"); SM.put("三国演义",A); //创建ArrayList集合 ArrayList<String> B= new ArrayList<String>(); //将字符元素添加到集合中 B.add("孙悟空"); B.add("唐僧"); SM.put("西游记",B); //创建ArrayList集合 ArrayList<String> C= new ArrayList<String>(); //将字符元素添加到集合中 C.add("武松"); C.add("宋江"); SM.put("水浒传",C); //对HashMap进行遍历输出 //创建键的集合 Set<String> set = SM.keySet(); //遍历键 for(String e: set){ //输出键 System.out.println(e); //利用遍历的键来获取键值---键值的类型是ArrayList ArrayList<String> MM = SM.get(e); //对ArrayList进行遍历---输出其键值内容 for(String K : MM){ System.out.println("\t"+K); } } } }
ArryLis集合嵌套HashMap集合案例
package Day18; /* * ArrayList嵌套HashMap集合并遍历 * * */ import java.util.ArrayList; import java.util.HashMap; import java.util.Set; public class Map11 { public static void main(String[] args) { //首先创建一个ArrayList集合 ArrayList<HashMap<String,String>> AA = new ArrayList<HashMap<String, String>>(); //创建HashMap集合 HashMap<String,String> SM = new HashMap<String, String>(); //向集合中添加键值对对象 SM.put("周瑜","小乔"); SM.put("吕布","貂蝉"); //将HashMap的元素添加到ArrayList集合中 AA.add(SM); HashMap<String,String> SM1 = new HashMap<String, String>(); //向集合中添加键值对对象 SM1.put("郭靖","黄蓉"); SM1.put("杨过","小龙女"); //将HashMap的元素添加到ArrayList集合中 AA.add(SM1); HashMap<String,String> SM2 = new HashMap<String, String>(); //向集合中添加键值对对象 SM2.put("令狐冲","任盈盈"); SM2.put("林平之","岳灵珊"); //将HashMap的元素添加到ArrayList集合中 AA.add(SM2); //对ArrayList集合进行遍历 for(HashMap<String,String> e: AA){ //对HashMap进行遍历 //创建键集合 Set<String> set = e.keySet(); //根据键获取键值 for(String key : set){ String value = e.get(key); //进行输出查看 System.out.println(key+"---"+value); } } } }
HashMap和ArrayList多层嵌套
学生类
package cn.itcast_06; public class Student { private String name; private int age; public Student() { super(); } public Student(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
package cn.itcast_06; import java.util.ArrayList; import java.util.HashMap; import java.util.Set; /* * 为了更符合要求: * 这次的数据就看成是学生对象。 * * 传智播客 * bj 北京校区 * jc 基础班 * 林青霞 27 * 风清扬 30 * jy 就业班 * 赵雅芝 28 * 武鑫 29 * sh 上海校区 * jc 基础班 * 郭美美 20 * 犀利哥 22 * jy 就业班 * 罗玉凤 21 * 马征 23 * gz 广州校区 * jc 基础班 * 王力宏 30 * 李静磊 32 * jy 就业班 * 郎朗 31 * 柳岩 33 * xa 西安校区 * jc 基础班 * 范冰冰 27 * 刘意 30 * jy 就业班 * 李冰冰 28 * 张志豪 29 */ public class HashMapDemo { public static void main(String[] args) { // 创建大集合 HashMap<String, HashMap<String, ArrayList<Student>>> czbkMap = new HashMap<String, HashMap<String, ArrayList<Student>>>(); // 北京校区数据 HashMap<String, ArrayList<Student>> bjCzbkMap = 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("赵雅芝", 28); Student s4 = new Student("武鑫", 29); array2.add(s3); array2.add(s4); bjCzbkMap.put("基础班", array1); bjCzbkMap.put("就业班", array2); czbkMap.put("北京校区", bjCzbkMap); // 晚上可以自己练习一下 // 上海校区数据自己做 // 广州校区数据自己做 // 西安校区数据 HashMap<String, ArrayList<Student>> xaCzbkMap = new HashMap<String, ArrayList<Student>>(); ArrayList<Student> array3 = new ArrayList<Student>(); Student s5 = new Student("范冰冰", 27); Student s6 = new Student("刘意", 30); array3.add(s5); array3.add(s6); ArrayList<Student> array4 = new ArrayList<Student>(); Student s7 = new Student("李冰冰", 28); Student s8 = new Student("张志豪", 29); array4.add(s7); array4.add(s8); xaCzbkMap.put("基础班", array3); xaCzbkMap.put("就业班", array4); czbkMap.put("西安校区", xaCzbkMap); // 遍历集合 Set<String> czbkMapSet = czbkMap.keySet(); for (String czbkMapKey : czbkMapSet) { System.out.println(czbkMapKey); HashMap<String, ArrayList<Student>> czbkMapValue = czbkMap .get(czbkMapKey); Set<String> czbkMapValueSet = czbkMapValue.keySet(); for (String czbkMapValueKey : czbkMapValueSet) { System.out.println("\t" + czbkMapValueKey); ArrayList<Student> czbkMapValueValue = czbkMapValue .get(czbkMapValueKey); for (Student s : czbkMapValueValue) { System.out.println("\t\t" + s.getName() + "---" + s.getAge()); } } } } }

浙公网安备 33010602011771号