A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. import java.util.ArrayList;
  2. import java.util.HashMap;
  3. import java.util.Set;

  4. /*
  5. * ArrayList嵌套HashMap:
  6. *
  7. * 将0118班存到一个Map<String,ArrayList<Student>>
  8. * 将0120班存到一个Map<String,ArrayList<Student>>
  9. */
  10. public class Demo1 {

  11.         public static void main(String[] args) {
  12.                 // Student对象已经封装好。一个name一个age这里就不拿上来了。直接使用

  13.                 // 第一个班,以及学生:

  14.                 // 创建ArrayList<Student>集合
  15.                 ArrayList<Student> stuArrList1 = new ArrayList<>();
  16.                 // 创建学生对象并添加到stuArrList1集合中
  17.                 stuArrList1.add(new Student("小明", 15));
  18.                 stuArrList1.add(new Student("小红", 16));
  19.                 // 创建HashMap集合
  20.                 HashMap<String, ArrayList<Student>> hMap1 = new HashMap<>();
  21.                 // 将创建好的stuArrLsit1添加到hMap1集合中
  22.                 hMap1.put("0118班", stuArrList1);

  23.                 // 第二个班,以及学生:同上
  24.                 ArrayList<Student> stuArrList2 = new ArrayList<>();
  25.                 stuArrList2.add(new Student("大明", 20));
  26.                 stuArrList2.add(new Student("大红", 18));
  27.                 HashMap<String, ArrayList<Student>> hMap2 = new HashMap<>();
  28.                 hMap2.put("0120班", stuArrList2);

  29.                 // 将创建好的两个班级存入一个ArrayList集合中
  30.                 ArrayList<HashMap<String, ArrayList<Student>>> lastArrList = new ArrayList<>();
  31.                 lastArrList.add(hMap1);
  32.                 lastArrList.add(hMap2);

  33.                 // 使用增强for循环遍历

  34.                 // 遍历lastArrList
  35.                 for (HashMap<String, ArrayList<Student>> map : lastArrList) {
  36.                         // 获取map中的键,但此时他还在HashMap中需要遍历拿出。
  37.                         Set<String> keySet = map.keySet();
  38.                         // 遍历keySet
  39.                         for (String key : keySet) {
  40.                                 // 到了这里就获取到了HashMap<String,ArrayList<Student>>中的键值:0118班,0120班
  41.                                 // 打印键值
  42.                                 System.out.println(key);
  43.                                 // 获取map中的值的地址
  44.                                 ArrayList<Student> arrList = map.get(key);
  45.                                 // 遍历arrList
  46.                                 for (Student stu : arrList) {
  47.                                         // 打印学生信息
  48.                                         System.out.println("\t" + stu.getName() + ","
  49.                                                         + stu.getAge());
  50.                                 }
  51.                         }
  52.                 }
  53.                 /*
  54.                  * 结果: 0118班 小明,15 小红,16 0120班 大明,20 大红,18
  55.                  */

  56.         }
  57. }
复制代码

1 个回复

倒序浏览
结果是:
0118班
          小明,15
          小红,16
0120班
          大明,20
          大红,18
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马