• 【Java基础】HashMap集合案例、集合嵌套及统计字符串每个字符出现的次数


    目录

    一、HashMap集合练习:键是String值是Student

    二、HashMap集合练习:键是Student值是String

    三、集合嵌套:ArrayList嵌套HashMap

    四、集合嵌套:HashMap嵌套ArrayList

    五、统计字符串中每个字符出现的次数


    一、HashMap集合练习:键是String值是Student

    需求:

    创建一个HashMap集合,键是学号(String),值是学生对象(Student)。存储三个键值对元素,并遍历

    思路:

    1、定义学生类

    2、创建HashMap集合对象

    3、创建学生对象

    4、把学生添加到集合

    5、遍历集合

            方式一:键找值

            方式二:键值对对象找键和值

    代码实现:

    1. public class Student {
    2. private String name;
    3. private int age;
    4. public Student() {
    5. }
    6. public Student(String name, int age) {
    7. this.name = name;
    8. this.age = age;
    9. }
    10. public String getName() {
    11. return name;
    12. }
    13. public void setName(String name) {
    14. this.name = name;
    15. }
    16. public int getAge() {
    17. return age;
    18. }
    19. public void setAge(int age) {
    20. this.age = age;
    21. }
    22. }

    测试类:

    1. public class HashMapDemo {
    2. public static void main(String[] args) {
    3. //创建HashMap集合对象
    4. HashMap hm = new HashMap();
    5. //创建学生对象
    6. Student s1 = new Student("小林", 20);
    7. Student s2 = new Student("小张", 25);
    8. Student s3 = new Student("小王", 23);
    9. //把学生添加到集合
    10. hm.put("itheima001", s1);
    11. hm.put("itheima002", s2);
    12. hm.put("itheima003", s3);
    13. //方式一:键找值
    14. Set keySet = hm.keySet();
    15. for (String key : keySet) {
    16. Student value = hm.get(key);
    17. System.out.println(key + "," + value.getName() + "," + value.getAge());
    18. }
    19. System.out.println("--------");
    20. //方式二:键值对对象找键和值
    21. Set> entrySet = hm.entrySet();
    22. for (Map.Entry me : entrySet) {
    23. String key = me.getKey();
    24. Student value = me.getValue();
    25. System.out.println(key + "," + value.getName() + "," + value.getAge());
    26. }
    27. }
    28. }

    二、HashMap集合练习:键是Student值是String

    需求:

    ■ 创建一个HashMap集合,键是学生对象(Student),值是居住地(String)。存储多个元素,并遍历。

    ■ 要求保证键的唯一性:如果学生对象的成员变量值相同,我们就认为是同一对象

    学生类:

    1. public class Student {
    2. private String name;
    3. private int age;
    4. public Student() {
    5. }
    6. public Student(String name, int age) {
    7. this.name = name;
    8. this.age = age;
    9. }
    10. public String getName() {
    11. return name;
    12. }
    13. public void setName(String name) {
    14. this.name = name;
    15. }
    16. public int getAge() {
    17. return age;
    18. }
    19. public void setAge(int age) {
    20. this.age = age;
    21. }
    22. @Override
    23. public boolean equals(Object o) {
    24. if (this == o) return true;
    25. if (o == null || getClass() != o.getClass()) return false;
    26. Student student = (Student) o;
    27. if (age != student.age) return false;
    28. return name != null ? name.equals(student.name) : student.name == null;
    29. }
    30. @Override
    31. public int hashCode() {
    32. int result = name != null ? name.hashCode() : 0;
    33. result = 31 * result + age;
    34. return result;
    35. }
    36. }

    测试类:

    1. public class HashMapDemo {
    2. public static void main(String[] args) {
    3. //创建HashMap集合对象
    4. HashMap hm = new HashMap();
    5. //创建学生对象
    6. Student s1 = new Student("小林", 30);
    7. Student s2 = new Student("小张", 35);
    8. Student s3 = new Student("小王", 33);
    9. Student s4 = new Student("小王", 33);
    10. //把学生添加到集合
    11. hm.put(s1, "西安");
    12. hm.put(s2, "武汉");
    13. hm.put(s3, "郑州");
    14. hm.put(s4, "北京");
    15. //遍历集合
    16. Set keySet = hm.keySet();
    17. for (Student key : keySet) {
    18. String value = hm.get(key);
    19. System.out.println(key.getName() + "," + key.getAge() + "," + value);
    20. }
    21. }
    22. }

    三、集合嵌套:ArrayList嵌套HashMap

    需求:

    创建一个ArrayList集合,存储三个元素,每一个元素都是HashMap

    每一个HashMap的键和值都是String,并遍历

    代码实现:

    1. public class ArrayListIncludeHashMapDemo {
    2. public static void main(String[] args) {
    3. //创建ArrayList集合
    4. ArrayList> array = new ArrayList>();
    5. //创建HashMap集合,并添加键值对元素
    6. HashMap hm1 = new HashMap();
    7. hm1.put("孙策", "大乔");
    8. hm1.put("周瑜", "小乔");
    9. //把HashMap作为元素添加到ArrayList集合
    10. array.add(hm1);
    11. HashMap hm2 = new HashMap();
    12. hm2.put("郭靖", "黄蓉");
    13. hm2.put("杨过", "小龙女");
    14. //把HashMap作为元素添加到ArrayList集合
    15. array.add(hm2);
    16. HashMap hm3 = new HashMap();
    17. hm3.put("令狐冲", "任盈盈");
    18. hm3.put("林平之", "岳灵珊");
    19. //把HashMap作为元素添加到ArrayList集合
    20. array.add(hm3);
    21. //遍历ArrayList集合
    22. for (HashMap hm : array) {
    23. Set keySet = hm.keySet();
    24. for (String key : keySet) {
    25. String value = hm.get(key);
    26. System.out.println(key + "," + value);
    27. }
    28. }
    29. }
    30. }

    四、集合嵌套:HashMap嵌套ArrayList

    需求:

    创建一个HashMap集合,存储三个键值对元素,每一个键值对元素的键是String,值是ArrayList

    每一个ArrayList的元素是String,并遍历

    代码实现:

    1. public class HashMapIncludeArrayListDemo {
    2. public static void main(String[] args) {
    3. //创建HashMap集合
    4. HashMap> hm = new HashMap>();
    5. //创建ArrayList集合,并添加元素
    6. ArrayList sgyy = new ArrayList();
    7. sgyy.add("诸葛亮");
    8. sgyy.add("赵云");
    9. //把ArrayList作为元素添加到HashMap集合
    10. hm.put("三国演义",sgyy);
    11. ArrayList xyj = new ArrayList();
    12. xyj.add("唐僧");
    13. xyj.add("孙悟空");
    14. //把ArrayList作为元素添加到HashMap集合
    15. hm.put("西游记",xyj);
    16. ArrayList shz = new ArrayList();
    17. shz.add("武松");
    18. shz.add("鲁智深");
    19. //把ArrayList作为元素添加到HashMap集合
    20. hm.put("水浒传",shz);
    21. //遍历HashMap集合
    22. Set keySet = hm.keySet();
    23. for(String key : keySet) {
    24. System.out.println(key);
    25. ArrayList value = hm.get(key);
    26. for(String s : value) {
    27. System.out.println("\t" + s);
    28. }
    29. }
    30. }
    31. }

    五、统计字符串中每个字符出现的次数

    需求:

    键盘录入一个字符串,要求统计字符串中每个字符串出现的次数

    举例:键盘录入"aababbccdeffeeda",在控制台输出:"a(4)b()c(2)d(2)e(3)f(2)"

    代码实现:

    1. public class HashMapDemo {
    2. public static void main(String[] args) {
    3. //键盘录入一个字符串
    4. Scanner sc = new Scanner(System.in);
    5. System.out.println("请输入一个字符串:");
    6. String line = sc.nextLine();
    7. //创建HashMap集合,键是Character,值是Integer
    8. // HashMap hm = new HashMap();
    9. TreeMap hm = new TreeMap();
    10. //遍历字符串,得到每一个字符
    11. for (int i = 0; i < line.length(); i++) {
    12. char key = line.charAt(i);
    13. //拿得到的每一个字符作为键到HashMap集合中去找对应的值,看其返回值
    14. Integer value = hm.get(key);
    15. if (value == null) {
    16. //如果返回值是null:说明该字符在HashMap集合中不存在,就把该字符作为键,1作为值存储
    17. hm.put(key,1);
    18. } else {
    19. //如果返回值不是null:说明该字符在HashMap集合中存在,把该值加1,然后重新存储该字符和对应的值
    20. value++;
    21. hm.put(key,value);
    22. }
    23. }
    24. //遍历HashMap集合,得到键和值,按照要求进行拼接
    25. StringBuilder sb = new StringBuilder();
    26. Set keySet = hm.keySet();
    27. for(Character key : keySet) {
    28. Integer value = hm.get(key);
    29. sb.append(key).append("(").append(value).append(")");
    30. }
    31. String result = sb.toString();
    32. //输出结果
    33. System.out.println(result);
    34. }
    35. }

     

  • 相关阅读:
    Spring02
    Unity入门08——核心系统02
    props验证指的是什么?Vue组件的props验证
    Bootstrap-栅格实例(二)
    《 新手》web前端(axios)后端(java-springboot)对接简解
    libevent数据结构——TAILQ_结构体
    python
    Sentinel黑白名单授权规则解读
    DirectX 使用 Vortice 从零开始控制台创建 Direct2D1 窗口修改颜色
    【分享】“飞鹅打印机“ 在集简云平台集成应用的常见问题与解决方案
  • 原文地址:https://blog.csdn.net/m0_61961937/article/details/126803118