zoukankan      html  css  js  c++  java
  • 黑马程序员_Ja-va基础视频-深入浅出精华版_day18学习笔记

    day18

    18.01 集合框架(Map集合概述和特点)

    1.Map接口概述

    (1) 将键映射到值的对象

    (2) 一个映射不能包含重复的键

    (3) 每个键最多只能映射到一个值

    2.Map接口和Collection接口的不同

    (1) Map是双列的,Collection是单列的

    (2) Map的键唯一,Collection的子体系Set是唯一的

    (3) Map集合的数据结构值针对键有效,跟值无关

         Collection集合的数据结构是针对元素有效

    作为学生来说,是根据学号来区分不同的学生的,那么假设我现在已经知道了学生的学号,我要根据学号去获取学生姓名,请问怎么做呢?

        如果采用前面讲解过的集合,我们只能把学号和学生姓名作为一个对象的成员,然后存储整个对象,将来遍历的时候,判断,获取对应的名称。

        但是呢,如果我都能把学生姓名拿出来了,我还需要根据编号去找吗?

        针对我们目前的这种需求:仅仅知道学号,就想知道学生姓名的情况,Java就提供了一种新的集合 Map

        通过查看API,我们知道Map集合的一个最大的特点,就是它可以存储键值对的元素。这个时候存储我们上面的需求,就可以这样做

       学号1 姓名1

       学号2 姓名2

       学号3 姓名3

       学号2(不行)姓名4

       学号4               姓名4

       Map集合的特点:

       将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

      

      Map集合和Collection集合的区别?

       Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的。可以把这个理解为:夫妻对

       Collection集合存储元素是单独出现的,Collection的儿子Set是唯一的,List是可重复的。可以把这个理解为:光棍(11.11)

     作为学生来说,是根据学号来区分不同的学生的,那么假设我现在已经知道了学生的学号,我要根据学号去获取学生姓名,请问怎么做呢?

        如果采用前面讲解过的集合,我们只能把学号和学生姓名作为一个对象的成员,然后存储整个对象,将来遍历的时候,判断,获取对应的名称。

        但是呢,如果我都能把学生姓名拿出来了,我还需要根据编号去找吗?

        针对我们目前的这种需求:仅仅知道学号,就想知道学生姓名的情况,Java就提供了一种新的集合 Map

        通过查看API,我们知道Map集合的一个最大的特点,就是它可以存储键值对的元素。这个时候存储我们上面的需求,就可以这样做

       学号1 姓名1

       学号2 姓名2

       学号3 姓名3

       学号2(不行)姓名4

       学号4               姓名4

       Map集合的特点:

       将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

      

      Map集合和Collection集合的区别?

       Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的。可以把这个理解为:夫妻对

       Collection集合存储元素是单独出现的,Collection的儿子Set是唯一的,List是可重复的。可以把这个理解为:光棍(11.11)

    18.02 集合框架(Map集合的功能概述)

    1:添加功能

      V put(K key,V value):添加元素。这个其实还有另一个功能?先不告诉你,等会讲

       如果键是第一次存储,就直接存储元素,返回null

       如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值

    2:删除功能

       void clear():移除所有的键值对元素

       V remove(Object key):根据键删除键值对元素,并把值返回

    3:判断功能

       boolean containsKey(Object key):判断集合是否包含指定的键

       boolean containsValue(Object value):判断集合是否包含指定的值

       boolean isEmpty():判断集合是否为空

    4:获取功能

       Set<Map.Entry<K,V>> entrySet():???

       V get(Object key):根据键获取值

       Set<K> keySet():获取集合中所有键的集合

       Collection<V> values():获取集合中所有值的集合

    5:长度功能

       int size():返回集合中的键值对的对数

    18.03 集合框架(Map集合的基本功能测试)

     1 public class MapDemo {
     2     public static void main(String[] args) {
     3         // 创建集合对象
     4         Map<String, String> map = new HashMap<String, String>();
     5 
     6         // 添加元素
     7         // V put(K key,V value):添加元素。这个其实还有另一个功能?先不告诉你,等会讲
     8         // System.out.println("put:" + map.put("文章", "马伊俐"));
     9         // System.out.println("put:" + map.put("文章", "姚笛"));
    10 
    11         map.put("邓超", "孙俪");
    12         map.put("黄晓明", "杨颖");
    13         map.put("周杰伦", "蔡依林");
    14         map.put("刘恺威", "杨幂");
    15 
    16         // void clear():移除所有的键值对元素
    17         // map.clear();
    18 
    19         // V remove(Object key):根据键删除键值对元素,并把值返回
    20         // System.out.println("remove:" + map.remove("黄晓明"));
    21         // System.out.println("remove:" + map.remove("黄晓波"));
    22 
    23         // boolean containsKey(Object key):判断集合是否包含指定的键
    24         // System.out.println("containsKey:" + map.containsKey("黄晓明"));
    25         // System.out.println("containsKey:" + map.containsKey("黄晓波"));
    26 
    27         // boolean isEmpty():判断集合是否为空
    28         // System.out.println("isEmpty:"+map.isEmpty());
    29 
    30         // int size():返回集合中的键值对的对数
    31         System.out.println("size:" + map.size());
    32 
    33         // 输出集合名称
    34         System.out.println("map:" + map);
    35     }
    36 }

    18.04 集合框架(Map集合的获取功能测试)

     1 package cn.itcast_01;
     2 
     3 import java.util.Collection;
     4 import java.util.HashMap;
     5 import java.util.Map;
     6 import java.util.Set;
     7 
     8 /*
     9  * 获取功能:
    10  * V get(Object key):根据键获取值
    11  * Set<K> keySet():获取集合中所有键的集合
    12  * Collection<V> values():获取集合中所有值的集合
    13  */
    14 public class MapDemo2 {
    15     public static void main(String[] args) {
    16         // 创建集合对象
    17         Map<String, String> map = new HashMap<String, String>();
    18 
    19         // 创建元素并添加元素
    20         map.put("邓超", "孙俪");
    21         map.put("黄晓明", "杨颖");
    22         map.put("周杰伦", "蔡依林");
    23         map.put("刘恺威", "杨幂");
    24 
    25         // V get(Object key):根据键获取值
    26         System.out.println("get:" + map.get("周杰伦"));
    27         System.out.println("get:" + map.get("周杰")); // 返回null
    28         System.out.println("----------------------");
    29 
    30         // Set<K> keySet():获取集合中所有键的集合
    31         Set<String> set = map.keySet();
    32         for (String key : set) {
    33             System.out.println(key);
    34         }
    35         System.out.println("----------------------");
    36 
    37         // Collection<V> values():获取集合中所有值的集合
    38         Collection<String> con = map.values();
    39         for (String value : con) {
    40             System.out.println(value);
    41         }
    42     }
    43 }

    18.05 集合框架(Map集合的遍历之键找值)

     1 package cn.itcast_01;
     2 
     3 import java.util.HashMap;
     4 import java.util.Map;
     5 import java.util.Set;
     6 
     7 /*
     8  * Map集合的遍历。
     9  * Map -- 夫妻对
    10  * 思路:
    11  *         A:把所有的丈夫给集中起来。
    12  *         B:遍历丈夫的集合,获取得到每一个丈夫。
    13  *         C:让丈夫去找自己的妻子。
    14  * 
    15  * 转换:
    16  *         A:获取所有的键
    17  *         B:遍历键的集合,获取得到每一个键
    18  *         C:根据键去找值
    19  */
    20 public class MapDemo3 {
    21     public static void main(String[] args) {
    22         // 创建集合对象
    23         Map<String, String> map = new HashMap<String, String>();
    24 
    25         // 创建元素并添加到集合
    26         map.put("杨过", "小龙女");
    27         map.put("郭靖", "黄蓉");
    28         map.put("杨康", "穆念慈");
    29         map.put("陈玄风", "梅超风");
    30 
    31         // 遍历
    32         // 获取所有的键
    33         Set<String> set = map.keySet();
    34         // 遍历键的集合,获取得到每一个键
    35         for (String key : set) {
    36             // 根据键去找值
    37             String value = map.get(key);
    38             System.out.println(key + "---" + value);
    39         }
    40     }
    41 }

    18.06 集合框架(Map集合的遍历之键值对对象找键和值)

     1 package cn.itcast_01;
     2 
     3 import java.util.HashMap;
     4 import java.util.Map;
     5 import java.util.Set;
     6 
     7 /*
     8  * Map集合的遍历。
     9  * Map -- 夫妻对
    10  * 
    11  * 思路:
    12  *         A:获取所有结婚证的集合
    13  *         B:遍历结婚证的集合,得到每一个结婚证
    14  *         C:根据结婚证获取丈夫和妻子
    15  * 
    16  * 转换:
    17  *         A:获取所有键值对对象的集合
    18  *         B:遍历键值对对象的集合,得到每一个键值对对象
    19  *         C:根据键值对对象获取键和值
    20  * 
    21  * 这里面最麻烦的就是键值对对象如何表示呢?
    22  * 看看我们开始的一个方法:
    23  *         Set<Map.Entry<K,V>> entrySet():返回的是键值对对象的集合
    24  */
    25 public class MapDemo4 {
    26     public static void main(String[] args) {
    27         // 创建集合对象
    28         Map<String, String> map = new HashMap<String, String>();
    29 
    30         // 创建元素并添加到集合
    31         map.put("杨过", "小龙女");
    32         map.put("郭靖", "黄蓉");
    33         map.put("杨康", "穆念慈");
    34         map.put("陈玄风", "梅超风");
    35 
    36         // 获取所有键值对对象的集合
    37         Set<Map.Entry<String, String>> set = map.entrySet();
    38         // 遍历键值对对象的集合,得到每一个键值对对象
    39         for (Map.Entry<String, String> me : set) {
    40             // 根据键值对对象获取键和值
    41             String key = me.getKey();
    42             String value = me.getValue();
    43             System.out.println(key + "---" + value);
    44         }
    45     }
    46 }

    18.07 集合框架(Map集合遍历的两种方式比较图解)

    Map集合遍历

    方式1:根据键找值

    (1) 获取所有键的集合

    (2) 遍历键的集合,获取到每一个键

    (3) 根据键找值

    方式2:根据键值对对象找键和值

    (1) 获取所有键值对对象的集合

    (2) 遍历键值对对象的集合,获取到每一个键值对对象

    (3) 根据键值对对象找键和值

    18.08 集合框架(HashMap集合键是String值是String的案例)

    1.HashMap类概述

    键是哈希表结构,可以保证键的唯一性

    2.HashMap案例

    (1) HashMap<String,String>

    (2) HashMap<Integer,String>

    (3) HashMap<String,Student>

    (4) HashMap<Student,String>

     1 package cn.itcast_02;
     2 
     3 import java.util.HashMap;
     4 import java.util.Set;
     5 
     6 /*
     7  * HashMap:是基于哈希表的Map接口实现。
     8  * 哈希表的作用是用来保证键的唯一性的。
     9  * 
    10  * HashMap<String,String>
    11  * 键:String
    12  * 值:String
    13  */
    14 public class HashMapDemo {
    15     public static void main(String[] args) {
    16         // 创建集合对象
    17         HashMap<String, String> hm = new HashMap<String, String>();
    18 
    19         // 创建元素并添加元素
    20         // String key1 = "it001";
    21         // String value1 = "马云";
    22         // hm.put(key1, value1);
    23 
    24         hm.put("it001", "马云");
    25         hm.put("it003", "马化腾");
    26         hm.put("it004", "乔布斯");
    27         hm.put("it005", "张朝阳");
    28         hm.put("it002", "裘伯君"); // wps
    29         hm.put("it001", "比尔盖茨");
    30 
    31         // 遍历
    32         Set<String> set = hm.keySet();
    33         for (String key : set) {
    34             String value = hm.get(key);
    35             System.out.println(key + "---" + value);
    36         }
    37     }
    38 }

    18.09 集合框架(HashMap集合键是Integer值是String的案例)

     1 package cn.itcast_02;
     2 
     3 import java.util.HashMap;
     4 import java.util.Set;
     5 
     6 /*
     7  * HashMap<Integer,String>
     8  * 键:Integer
     9  * 值:String
    10  */
    11 public class HashMapDemo2 {
    12     public static void main(String[] args) {
    13         // 创建集合对象
    14         HashMap<Integer, String> hm = new HashMap<Integer, String>();
    15 
    16         // 创建元素并添加元素
    17         // Integer i = new Integer(27);
    18         // Integer i = 27;
    19         // String s = "林青霞";
    20         // hm.put(i, s);
    21 
    22         hm.put(27, "林青霞");
    23         hm.put(30, "风清扬");
    24         hm.put(28, "刘意");
    25         hm.put(29, "林青霞");
    26 
    27         // 下面的写法是八进制,但是不能出现8以上的单个数据
    28         // hm.put(003, "hello");
    29         // hm.put(006, "hello");
    30         // hm.put(007, "hello");
    31         // hm.put(008, "hello");
    32 
    33         // 遍历
    34         Set<Integer> set = hm.keySet();
    35         for (Integer key : set) {
    36             String value = hm.get(key);
    37             System.out.println(key + "---" + value);
    38         }
    39 
    40         // 下面这种方式仅仅是集合的元素的字符串表示
    41         // System.out.println("hm:" + hm);
    42     }
    43 }

    18.10 集合框架(HashMap集合键是String值是Student的案例)

     1 package cn.itcast_02;
     2 
     3 public class Student {
     4     private String name;
     5     private int age;
     6 
     7     public Student() {
     8         super();
     9     }
    10 
    11     public Student(String name, int age) {
    12         super();
    13         this.name = name;
    14         this.age = age;
    15     }
    16 
    17     public String getName() {
    18         return name;
    19     }
    20 
    21     public void setName(String name) {
    22         this.name = name;
    23     }
    24 
    25     public int getAge() {
    26         return age;
    27     }
    28 
    29     public void setAge(int age) {
    30         this.age = age;
    31     }
    32 }
    View Code
     1 package cn.itcast_02;
     2 
     3 import java.util.HashMap;
     4 import java.util.Set;
     5 
     6 /*
     7  * HashMap<String,Student>
     8  * 键:String    学号
     9  * 值:Student 学生对象
    10  */
    11 public class HashMapDemo3 {
    12     public static void main(String[] args) {
    13         // 创建集合对象
    14         HashMap<String, Student> hm = new HashMap<String, Student>();
    15 
    16         // 创建学生对象
    17         Student s1 = new Student("周星驰", 58);
    18         Student s2 = new Student("刘德华", 55);
    19         Student s3 = new Student("梁朝伟", 54);
    20         Student s4 = new Student("刘嘉玲", 50);
    21 
    22         // 添加元素
    23         hm.put("9527", s1);
    24         hm.put("9522", s2);
    25         hm.put("9524", s3);
    26         hm.put("9529", s4);
    27 
    28         // 遍历
    29         Set<String> set = hm.keySet();
    30         for (String key : set) {
    31             // 注意了:这次值不是字符串了
    32             // String value = hm.get(key);
    33             Student value = hm.get(key);
    34             System.out.println(key + "---" + value.getName() + "---" + value.getAge());
    35         }
    36     }
    37 }

    18.11 集合框架(HashMap集合键是Student值是String的案例)

     1 package cn.itcast_02;
     2 
     3 public class Student {
     4     private String name;
     5     private int age;
     6 
     7     public Student() {
     8         super();
     9     }
    10 
    11     public Student(String name, int age) {
    12         super();
    13         this.name = name;
    14         this.age = age;
    15     }
    16 
    17     public String getName() {
    18         return name;
    19     }
    20 
    21     public void setName(String name) {
    22         this.name = name;
    23     }
    24 
    25     public int getAge() {
    26         return age;
    27     }
    28 
    29     public void setAge(int age) {
    30         this.age = age;
    31     }
    32 
    33     @Override
    34     public int hashCode() {
    35         final int prime = 31;
    36         int result = 1;
    37         result = prime * result + age;
    38         result = prime * result + ((name == null) ? 0 : name.hashCode());
    39         return result;
    40     }
    41 
    42     @Override
    43     public boolean equals(Object obj) {
    44         if (this == obj)
    45             return true;
    46         if (obj == null)
    47             return false;
    48         if (getClass() != obj.getClass())
    49             return false;
    50         Student other = (Student) obj;
    51         if (age != other.age)
    52             return false;
    53         if (name == null) {
    54             if (other.name != null)
    55                 return false;
    56         } else if (!name.equals(other.name))
    57             return false;
    58         return true;
    59     }
    60 
    61 }
    View Code
     1 package cn.itcast_02;
     2 
     3 import java.util.HashMap;
     4 import java.util.Set;
     5 
     6 /*
     7  * HashMap<Student,String>
     8  * 键:Student
     9  *         要求:如果两个对象的成员变量值都相同,则为同一个对象。
    10  * 值:String
    11  */
    12 public class HashMapDemo4 {
    13     public static void main(String[] args) {
    14         // 创建集合对象
    15         HashMap<Student, String> hm = new HashMap<Student, String>();
    16 
    17         // 创建学生对象
    18         Student s1 = new Student("貂蝉", 27);
    19         Student s2 = new Student("王昭君", 30);
    20         Student s3 = new Student("西施", 33);
    21         Student s4 = new Student("杨玉环", 35);
    22         Student s5 = new Student("貂蝉", 27);
    23 
    24         // 添加元素
    25         hm.put(s1, "8888");
    26         hm.put(s2, "6666");
    27         hm.put(s3, "5555");
    28         hm.put(s4, "7777");
    29         hm.put(s5, "9999");
    30 
    31         // 遍历
    32         Set<Student> set = hm.keySet();
    33         for (Student key : set) {
    34             String value = hm.get(key);
    35             System.out.println(key.getName() + "---" + key.getAge() + "---" + value);
    36         }
    37     }
    38 }

    18.12 集合框架(LinkedHashMap的概述和使用)

    Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。

     1 package cn.itcast_03;
     2 
     3 import java.util.LinkedHashMap;
     4 import java.util.Set;
     5 
     6 /*
     7  * LinkedHashMap:是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。
     8  * 由哈希表保证键的唯一性
     9  * 由链表保证键盘的有序(存储和取出的顺序一致)
    10  */
    11 public class LinkedHashMapDemo {
    12     public static void main(String[] args) {
    13         // 创建集合对象
    14         LinkedHashMap<String, String> hm = new LinkedHashMap<String, String>();
    15 
    16         // 创建并添加元素
    17         hm.put("2345", "hello");
    18         hm.put("1234", "world");
    19         hm.put("3456", "java");
    20         hm.put("1234", "javaee");
    21         hm.put("3456", "android");
    22 
    23         // 遍历
    24         Set<String> set = hm.keySet();
    25         for (String key : set) {
    26             String value = hm.get(key);
    27             System.out.println(key + "---" + value);
    28         }
    29     }
    30 }

    18.13 集合框架(TreeMap集合键是String值是String的案例)

    1.TreeMap类概述

    键是红黑树结构,可以保证键的排序和唯一性

    2.TreeMap案例

    (1) TreeMap<String,String>

    (2) TreeMap<Student,String>

     1 package cn.itcast_04;
     2 
     3 import java.util.Set;
     4 import java.util.TreeMap;
     5 
     6 /*
     7  * TreeMap:是基于红黑树的Map接口的实现。
     8  * 
     9  * HashMap<String,String>
    10  * 键:String
    11  * 值:String
    12  */
    13 public class TreeMapDemo {
    14     public static void main(String[] args) {
    15         // 创建集合对象
    16         TreeMap<String, String> tm = new TreeMap<String, String>();
    17 
    18         // 创建元素并添加元素
    19         tm.put("hello", "你好");
    20         tm.put("world", "世界");
    21         tm.put("java", "爪哇");
    22         tm.put("world", "世界2");
    23         tm.put("javaee", "爪哇EE");
    24 
    25         // 遍历集合
    26         Set<String> set = tm.keySet();
    27         for (String key : set) {
    28             String value = tm.get(key);
    29             System.out.println(key + "---" + value);
    30         }
    31     }
    32 }

    18.14 集合框架(TreeMap集合键是Student值是String的案例)

     1 package cn.itcast_04;
     2 
     3 public class Student {
     4     private String name;
     5     private int age;
     6 
     7     public Student() {
     8         super();
     9     }
    10 
    11     public Student(String name, int age) {
    12         super();
    13         this.name = name;
    14         this.age = age;
    15     }
    16 
    17     public String getName() {
    18         return name;
    19     }
    20 
    21     public void setName(String name) {
    22         this.name = name;
    23     }
    24 
    25     public int getAge() {
    26         return age;
    27     }
    28 
    29     public void setAge(int age) {
    30         this.age = age;
    31     }
    32 }
    View Code
     1 package cn.itcast_04;
     2 
     3 import java.util.Comparator;
     4 import java.util.Set;
     5 import java.util.TreeMap;
     6 
     7 /*
     8  * TreeMap<Student,String>
     9  * 键:Student
    10  * 值:String
    11  */
    12 public class TreeMapDemo2 {
    13     public static void main(String[] args) {
    14         // 创建集合对象
    15         TreeMap<Student, String> tm = new TreeMap<Student, String>(new Comparator<Student>() {
    16             @Override
    17             public int compare(Student s1, Student s2) {
    18                 // 主要条件
    19                 int num = s1.getAge() - s2.getAge();
    20                 // 次要条件
    21                 int num2 = num == 0 ? s1.getName().compareTo(s2.getName()) : num;
    22                 return num2;
    23             }
    24         });
    25 
    26         // 创建学生对象
    27         Student s1 = new Student("潘安", 30);
    28         Student s2 = new Student("柳下惠", 35);
    29         Student s3 = new Student("唐伯虎", 33);
    30         Student s4 = new Student("燕青", 32);
    31         Student s5 = new Student("唐伯虎", 33);
    32 
    33         // 存储元素
    34         tm.put(s1, "宋朝");
    35         tm.put(s2, "元朝");
    36         tm.put(s3, "明朝");
    37         tm.put(s4, "清朝");
    38         tm.put(s5, "汉朝");
    39 
    40         // 遍历
    41         Set<Student> set = tm.keySet();
    42         for (Student key : set) {
    43             String value = tm.get(key);
    44             System.out.println(key.getName() + "---" + key.getAge() + "---" + value);
    45         }
    46     }
    47 }

    18.15 集合框架(统计字符串中每个字符出现的次数案例图解)

    18.16 集合框架(统计字符串中每个字符出现的次数案例代码实现)

     1 package cn.itcast_05;
     2 
     3 import java.util.Scanner;
     4 import java.util.Set;
     5 import java.util.TreeMap;
     6 
     7 /*
     8  * 需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)
     9  * 
    10  * 分析:
    11  *         A:定义一个字符串(可以改进为键盘录入)
    12  *         B:定义一个TreeMap集合
    13  *             键:Character
    14  *             值:Integer
    15  *         C:把字符串转换为字符数组
    16  *         D:遍历字符数组,得到每一个字符
    17  *         E:拿刚才得到的字符作为键到集合中去找值,看返回值
    18  *             是null:说明该键不存在,就把该字符作为键,1作为值存储
    19  *             不是null:说明该键存在,就把值加1,然后重写存储该键和值
    20  *         F:定义字符串缓冲区变量
    21  *         G:遍历集合,得到键和值,进行按照要求拼接
    22  *         H:把字符串缓冲区转换为字符串输出
    23  * 
    24  * 录入:linqingxia
    25  * 结果:result:a(1)g(1)i(3)l(1)n(2)q(1)x(1)
    26  */
    27 public class TreeMapDemo {
    28     public static void main(String[] args) {
    29         // 定义一个字符串(可以改进为键盘录入)
    30         Scanner sc = new Scanner(System.in);
    31         System.out.println("请输入一个字符串:");
    32         String line = sc.nextLine();
    33 
    34         // 定义一个TreeMap集合
    35         TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();
    36 
    37         // 把字符串转换为字符数组
    38         char[] chs = line.toCharArray();
    39 
    40         // 遍历字符数组,得到每一个字符
    41         for (char ch : chs) {
    42             // 拿刚才得到的字符作为键到集合中去找值,看返回值
    43             Integer i = tm.get(ch);
    44 
    45             // 是null:说明该键不存在,就把该字符作为键,1作为值存储
    46             if (i == null) {
    47                 tm.put(ch, 1);
    48             } else {
    49                 // 不是null:说明该键存在,就把值加1,然后重写存储该键和值
    50                 i++;
    51                 tm.put(ch, i);
    52             }
    53         }
    54 
    55         // 定义字符串缓冲区变量
    56         StringBuilder sb = new StringBuilder();
    57 
    58         // 遍历集合,得到键和值,进行按照要求拼接
    59         Set<Character> set = tm.keySet();
    60         for (Character key : set) {
    61             Integer value = tm.get(key);
    62             sb.append(key).append("(").append(value).append(")");
    63         }
    64 
    65         // 把字符串缓冲区转换为字符串输出
    66         String result = sb.toString();
    67         System.out.println("result:" + result);
    68     }
    69 }

    18.17 集合框架(断点查看统计字符串中每个字符出现的次数案例)

    越努力,越幸运!
  • 相关阅读:
    动态分配内存与静态分配内存
    指针的指针
    cpp与其他语言相比较
    数组是什么
    cocos2d-x 2.1.4 项目配置过程
    显示隐藏文件 osx 10.10
    Windows 10 SDK 10.0.10158
    Office 2016 (Preview)
    Windows 10 SDK 10.0.10069 : The installer failed. User cancelled installation. Error code: -2147023294
    用系统工具sxstrace检查缺少的VC运行时组件
  • 原文地址:https://www.cnblogs.com/GaoLi3303315992/p/12703347.html
Copyright © 2011-2022 走看看