java 18 - 8 HashMap和ArrayList的嵌套2

数据乱扯的
结果:
  小说
    三大名著
           三国演义
              吕布    30
              赵云    28
           西游记
              孙悟空   600
              唐僧     30
    武侠小说
           笑傲江湖
              令狐冲    26
              林平之    28
          神雕侠侣
              郭靖      40
              杨过    23

  分析:
    总的集合是      HashMap<String,HashMaP<String,ArrayList<Person>>>,
      子集合:HashMaP<String,ArrayList<Person>>   ArrayList<Person>

 1 package zl_MapDemo;
 2
 3 import java.util.ArrayList;
 4 import java.util.HashMap;
 5 import java.util.Set;
 6 public class HashMapDemo {
 7
 8     public static void main(String[] args) {
 9
10         //创建总集合小说
11         HashMap<String,HashMap<String,ArrayList<Person>>> hm1 =
12                 new  HashMap<String,HashMap<String,ArrayList<Person>>>();
13
14         //创建三大名著子集合
15         HashMap<String,ArrayList<Person>> hm2 = new HashMap<String,ArrayList<Person>>();
16         //创建三国演义集合
17         ArrayList<Person> list1 = new ArrayList<Person>();
18         //创建西游记集合
19         ArrayList<Person> list2 = new ArrayList<Person>();
20
21         //创建三国演义和西游记集合的元素
22         Person p1 = new Person ("吕布",30);
23         Person p2 = new Person ("赵云",28);
24         Person p3 = new Person ("孙悟空",600);
25         Person p4 = new Person ("唐僧",26);
26
27         //把元素添加到三国演义和西游记的集合中
28         list1.add(p1);
29         list1.add(p2);
30         list2.add(p3);
31         list2.add(p4);
32
33         //把三国演义和西游记集合添加到三大名著集合中
34         hm2.put("三国演义", list1);
35         hm2.put("西游记", list2);
36
37         //再把三大名著集合添加到小说集合中
38         hm1.put("三大名著", hm2);
39
40         //创建武侠小说集合
41         HashMap<String,ArrayList<Person>> wxhm = new HashMap<String,ArrayList<Person>>();
42
43         //创建笑傲江湖和神雕侠侣集合
44         ArrayList<Person> array1 = new ArrayList<Person>();
45         ArrayList<Person> array2 = new ArrayList<Person>();
46
47         //创建笑傲江湖和神雕侠侣集合的元素
48         Person s1 = new Person("令狐冲",26);
49         Person s2 = new Person("林平之",28);
50         Person s3 = new Person("郭靖",40);
51         Person s4 = new Person("杨过  ",23);
52
53         //把这些元素分别添加到两个集合中
54         array1.add(s1);
55         array1.add(s2);
56         array2.add(s3);
57         array2.add(s4);
58
59         //把两个集合添加到武侠小说集合中
60         wxhm.put("笑傲江湖", array1);
61         wxhm.put("神雕侠侣", array2);
62
63         //把武侠小说集合添加到小说集合中
64         hm1.put("武侠小说", wxhm);
65
66         //遍历
67
68         //获取小说集合的键集合
69         Set<String> hm1Set = hm1.keySet();
70         //遍历
71         for(String hm1key : hm1Set){
72             //小说集合的值是HashMap<String,ArrayList<Person>>
73             HashMap<String,ArrayList<Person>> xsvalue= hm1.get(hm1key);
74             //创建三大名著和武侠小说这个集合的键集合
75             Set<String> xsSet = xsvalue.keySet();
76             //遍历
77             for(String xskey : xsSet){
78                 System.out.println(xskey);
79             //这个集合的值是ArrayList<Person>
80             ArrayList<Person> value = xsvalue.get(xskey);
81
82             //遍历ArrayList集合
83             for(Person result : value){
84                 System.out.println("\t "+result.getName()+"\t"+result.getAge());
85             }
86         }
87         }
88     }
89
90 }
时间: 2024-10-25 23:28:36

java 18 - 8 HashMap和ArrayList的嵌套2的相关文章

java 18 - 9 HashMap和ArrayList的嵌套3

ArrayList集合嵌套HashMap集合并遍历. 需求: 假设ArrayList集合的元素是HashMap.有3个. 每一个HashMap集合的键和值都是字符串. 元素如下,请遍历. 结果: 周瑜---小乔 吕布---貂蝉 郭靖---黄蓉 杨过---小龙女 令狐冲---任盈盈 林平之---岳灵珊 1 package zl_MapDemo; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.uti

java 18 - 7 HashMap和ArrayList的嵌套1

需求: 假设HashMap集合的元素是ArrayList.有3个. 每一个ArrayList集合的值是字符串. 元素如下,请遍历. 结果: 三国演义 吕布 赵云 笑傲江湖 令狐冲 林平之 神雕侠侣 郭靖 杨过 1 package zl_MapDemo; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.Set; 6 public class MapAndArrayList { 7 8 pu

JAVA源码走读(一) HashMap与ArrayList

HashMap 一.HashMap基本概念: HashMap是基于哈希表的Map接口的实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变. HashMap不是线程安全的,如果想要线程安全的HashMap,可以通过Collections类的静态方法synchronizedMap获得线程安全的HashMap. Map map = Connections.synchronized(new HashMap()); 二.HashMap的

Java泛型(一)ArrayList和HashMap

package Plan.GenericDemo; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.junit.Test; public class Demo1 {  public static void main(String[

【JAVA】六 JAVA Map 一 HashMap

[JAVA]六 JAVA Map 一 HashMap JDK API java.util Interface Map Type Parameters: K - the type of keys maintained by this map V - the type of mapped values All Known Subinterfaces: Bindings, ConcurrentMap<K,V>, ConcurrentNavigableMap<K,V>, LogicalMe

java中的HashMap解析

这篇文章准备从源码的角度带大家分析一下java中的hashMap的原理,在了解源码之前,我们先根据自己的理解创建一个hashMap. 先说明一下创建的具体原理是这样的,所谓hashMap,必然是用hash方法来区分不同的key值.学过hash的都知道,我们解决hash冲突的一种方法就是使用散列和桶,首先确定所在的桶号,然后在桶里面逐个查找.其实我们也可以单纯使用数组实现map,使用散列是为了获得更高的查询效率. 要写自己的hashmap前,必须说明一下两个方法,就是hashcode()和equa

Java ConcurrentHashMap学习 —— HashMap Vs. ConcurrentHashMap Vs. SynchronizedMap – How a HashMap can be Synchronized in Java

HashMap is a very powerful data structure in Java. We use it everyday and almost in all applications. There are quite a few examples which I have written before on How to Implement Threadsafe cache, How to convert Hashmap to Arraylist? We used Hashma

Java中关于HashMap的使用和遍历(转)

Java中关于HashMap的使用和遍历 分类: 算法与数据结构2011-10-19 10:53 5345人阅读 评论(0) 收藏 举报 hashmapjavastringobjectiteratorlist 1:使用HashMap的一个简单例子 [java] view plaincopy package com.pb.collection; import java.util.HashMap; import java.util.Iterator; import java.util.Set; im

Java技术之HashMap

哈希映像,它在Java中经常用到,主要保存key-value数据,其中HashMap实现了Map接口.系统通过Hash算法来计算key-value存储的位置,这样可以快速存取Map的key-value对. HashMap的存储实现 HashMap采用一种所谓的“Hash 算法”来决定每个元素的存储位置.下面结合源码解析HashMap的实现. HashMap<String, String> map=new HashMap<String, String>(); map.put(&quo