zoukankan      html  css  js  c++  java
  • day18_Map案例

    A:统计一个字符串中每个字符出现的次数

    /*
    * 需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)
    *
    * 分析:
    * A:定义一个字符串(可以改进为键盘录入)
    * B:定义一个TreeMap集合
    * 键:Character
    * 值:Integer
    * C:把字符串转换为字符数组
    * D:遍历字符数组,得到每一个字符
    * E:拿刚才得到的字符作为键到集合中去找值,看返回值
    * 是null:说明该键不存在,就把该字符作为键,1作为值存储
    * 不是null:说明该键存在,就把值加1,然后重写存储该键和值
    * F:定义字符串缓冲区变量
    * G:遍历集合,得到键和值,进行按照要求拼接
    * H:把字符串缓冲区转换为字符串输出
    *
    * 录入:linqingxia
    * 结果:result:a(1)g(1)i(3)l(1)n(2)q(1)x(1)
    */
    public class TreeMapDemo {
    public static void main(String[] args) {
    // 定义一个字符串(可以改进为键盘录入)
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入一个字符串:");
    String line = sc.nextLine();

    // 定义一个TreeMap集合
    TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();

    //把字符串转换为字符数组
    char[] chs = line.toCharArray();

    //遍历字符数组,得到每一个字符
    for(char ch : chs){
    //拿刚才得到的字符作为键到集合中去找值,看返回值
    Integer i = tm.get(ch);

    //是null:说明该键不存在,就把该字符作为键,1作为值存储
    if(i == null){
    tm.put(ch, 1);
    }else {
    //不是null:说明该键存在,就把值加1,然后重写存储该键和值
    i++;
    tm.put(ch,i);
    }
    }

    //定义字符串缓冲区变量
    StringBuilder sb= new StringBuilder();

    //遍历集合,得到键和值,进行按照要求拼接
    Set<Character> set = tm.keySet();
    for(Character key : set){
    Integer value = tm.get(key);
    sb.append(key).append("(").append(value).append(")");
    }

    //把字符串缓冲区转换为字符串输出
    String result = sb.toString();
    System.out.println("result:"+result);
    }
    }

    ---------------------------------------------------------------------------------------------------------------------------------
    B:集合的嵌套遍历
                a:HashMap嵌套HashMap

    /*
    * HashMap嵌套HashMap
    *
    * 传智播客
    * jc 基础班
    * 陈玉楼 20
    * 高跃 22
    * jy 就业班
    * 李杰 21
    * 曹石磊 23
    *
    * 先存储元素,然后遍历元素
    */
    public class HashMapDemo2 {
    public static void main(String[] args) {
    // 创建集合对象
    HashMap<String, HashMap<String, Integer>> czbkMap = new HashMap<String, HashMap<String, Integer>>();

    // 创建基础班集合对象
    HashMap<String, Integer> jcMap = new HashMap<String, Integer>();
    // 添加元素
    jcMap.put("陈玉楼", 20);
    jcMap.put("高跃", 22);
    // 把基础班添加到大集合
    czbkMap.put("jc", jcMap);

    // 创建就业班集合对象
    HashMap<String, Integer> jyMap = new HashMap<String, Integer>();
    // 添加元素
    jyMap.put("李杰", 21);
    jyMap.put("曹石磊", 23);
    // 把基础班添加到大集合
    czbkMap.put("jy", jyMap);

    //遍历集合
    Set<String> czbkMapSet = czbkMap.keySet();
    for(String czbkMapKey : czbkMapSet){
    System.out.println(czbkMapKey);
    HashMap<String, Integer> czbkMapValue = czbkMap.get(czbkMapKey);
    Set<String> czbkMapValueSet = czbkMapValue.keySet();
    for(String czbkMapValueKey : czbkMapValueSet){
    Integer czbkMapValueValue = czbkMapValue.get(czbkMapValueKey);
    System.out.println(" "+czbkMapValueKey+"---"+czbkMapValueValue);
    }
    }
    }
    }

    输出结果:

    jc
    高跃---22
    陈玉楼---20
    jy
    曹石磊---23
    李杰---21

    ---------------------------------------------------------------------------------------------------------------------------------
    b:HashMap嵌套ArrayList

    /*
    *需求:
    *假设HashMap集合的元素是ArrayList。有3个。
    *每一个ArrayList集合的值是字符串。
    *元素我已经完成,请遍历。
    *结果:
    * 三国演义
    * 吕布
    * 周瑜
    * 笑傲江湖
    * 令狐冲
    * 林平之
    * 神雕侠侣
    * 郭靖
    * 杨过
    */
    public class HashMapIncludeArrayListDemo {
    public static void main(String[] args) {
    // 创建集合对象
    HashMap<String, ArrayList<String>> hm = new HashMap<String, ArrayList<String>>();

    // 创建元素集合1
    ArrayList<String> array1 = new ArrayList<String>();
    array1.add("吕布");
    array1.add("周瑜");
    hm.put("三国演义", array1);

    // 创建元素集合2
    ArrayList<String> array2 = new ArrayList<String>();
    array2.add("令狐冲");
    array2.add("林平之");
    hm.put("笑傲江湖", array2);

    // 创建元素集合3
    ArrayList<String> array3 = new ArrayList<String>();
    array3.add("郭靖");
    array3.add("杨过");
    hm.put("神雕侠侣", array3);

    //遍历集合
    Set<String> set = hm.keySet();
    for(String key : set){
    System.out.println(key);
    ArrayList<String> value = hm.get(key);
    for(String s : value){
    System.out.println(" "+s);
    }
    }
    }
    }

    ---------------------------------------------------------------------------------------------------------------------------------
    c:ArrayList嵌套HashMap

    /*
    ArrayList集合嵌套HashMap集合并遍历。
    需求:
    假设ArrayList集合的元素是HashMap。有3个。
    每一个HashMap集合的键和值都是字符串。
    元素我已经完成,请遍历。
    结果:
    周瑜---小乔
    吕布---貂蝉

    郭靖---黄蓉
    杨过---小龙女

    令狐冲---任盈盈
    林平之---岳灵珊
    */
    public class ArrayListIncludeHashMapDemo {
    public static void main(String[] args) {
    // 创建集合对象
    ArrayList<HashMap<String, String>> array = new ArrayList<HashMap<String, String>>();

    // 创建元素1
    HashMap<String, String> hm1 = new HashMap<String, String>();
    hm1.put("周瑜", "小乔");
    hm1.put("吕布", "貂蝉");
    // 把元素添加到array里面
    array.add(hm1);

    // 创建元素1
    HashMap<String, String> hm2 = new HashMap<String, String>();
    hm2.put("郭靖", "黄蓉");
    hm2.put("杨过", "小龙女");
    // 把元素添加到array里面
    array.add(hm2);

    // 创建元素1
    HashMap<String, String> hm3 = new HashMap<String, String>();
    hm3.put("令狐冲", "任盈盈");
    hm3.put("林平之", "岳灵珊");
    // 把元素添加到array里面
    array.add(hm3);

    // 遍历
    for (HashMap<String, String> hm : array) {
    Set<String> set = hm.keySet();
    for (String key : set) {
    String value = hm.get(key);
    System.out.println(key + "---" + value);
    }
    }
    }
    }

    ---------------------------------------------------------------------------------------------------------------------------------
    d:多层嵌套

    /*
    * 为了更符合要求:
    * 这次的数据就看成是学生对象。
    *
    * 传智播客
    * 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(" " + czbkMapValueKey);
    ArrayList<Student> czbkMapValueValue = czbkMapValue
    .get(czbkMapValueKey);
    for (Student s : czbkMapValueValue) {
    System.out.println(" " + s.getName() + "---"
    + s.getAge());
    }
    }
    }
    }
    }

  • 相关阅读:
    Kubernetes实践踩坑系列(一).应用管理的难题
    基于Kubernetes服务发现机制的探讨Non Service
    Kubernetes中 Pod 是怎样被驱逐的?
    记一次JAVA进程导致Kubernetes节点CPU飙高的排查与解决
    .NET Core 3.0 可回收程序集加载上下文
    微服务日志之Spring Boot Kafka实现日志收集
    微服务日志之.NET Core使用NLog通过Kafka实现日志收集
    ASP.NET Core使用SkiaSharp实现验证码
    微软为.NET程序员带来了最优的跨平台开发体验-WSL
    讨论.NET Core 配置对GC 工作模式与内存的影响
  • 原文地址:https://www.cnblogs.com/canceler/p/4623383.html
Copyright © 2011-2022 走看看