• java 18 -3 Map集合的键是String和自定义类的区别



    HashMap:是基于哈希表的Map接口实现。
      哈希表的作用是用来保证键的唯一性的。

      HashMap<String,Person> 键是String,Integer等类的话,就会重写HashCode()和equals()方法,键的值一样,后面的就会覆盖前面的
      HashMap<Person,String> 键是自定义类的话,需要在自定义类中重写HashCode()和equals()方法,否则就算键的值一样,也会加进去的。

     1 package map_son;
     2 
     3 import java.util.HashMap;
     4 import java.util.Set;
     5 
     6 public class HashMapDemo1 {
     7 
     8     public static void main(String[] args) {
     9         
    10         //首先看HashMap<String,String>
    11         
    12         //创建HashMap集合对象
    13         HashMap<String , Person> hm = new HashMap<String,Person>();
    14         
    15         //创建Person对象的元素
    16         Person s1 = new Person("阿三",27);
    17         Person s2 = new Person("阿猫",29);
    18         Person s3 = new Person("阿狗",27);
    19         Person s4 = new Person("阿四",26);
    20         Person s5 = new Person("阿狗",27);
    21         
    22         //添加键值对元素
    23         hm.put("9527",s1);
    24         hm.put("9522",s2);
    25         hm.put("9524",s3);
    26         hm.put("9529",s4);
    27         hm.put("9529",s5);
    28         
    29         //遍历集合 
    30         //首先获取键,再遍历,获取值,再输出键值对
    31         Set<String> s = hm.keySet();
    32         //遍历键集合
    33         for(String key : s){
    34             Person valus = hm.get(key);
    35             System.out.println(key+"---"+valus.getName() + "-----" + valus.getAge());
    36             /*    键的唯一性,Hash类集合的输出顺序,无规则。。
    37                 9524---阿狗-----27
    38                 9522---阿猫-----29
    39                 9529---阿狗-----27
    40                 9527---阿三-----27
    41              */
    42         }
    43         System.out.println("-------------------------");
    44         
    45         
    46         //HashMap<Person,String>     
    47         //键是自定义类的话,需要在自定义类中重写HashCode()和equals()方法,否则就算键的值一样,也会加进去的。
    48         
    49         //创建集合对象
    50         HashMap<Person,String> h = new HashMap<Person,String>();
    51         
    52         //把Person对象的元素当作键导入集合中,
    53         h.put(s1, "9527");
    54         h.put(s2, "9522");
    55         h.put(s3, "9524");
    56         h.put(s4, "9529");
    57         h.put(s5, "9529");
    58         
    59         //遍历集合
    60         //获取键集合
    61         Set<Person> sp = h.keySet();
    62         //遍历键集合
    63         for(Person key : sp){
    64             //获取值
    65             String str = h.get(key);
    66             System.out.println(str +"---"+key.getName()+"-----"+key.getAge());
    67         }
    68         /*    在自定义类中重写HashCode()和equals()方法,否则就算键的值一样,也会加进去的。
    69              9529---阿四-----26
    70             9527---阿三-----27
    71             9522---阿猫-----29
    72             9529---阿狗-----27
    73          */
    74     }
    75 
    76 }
    何事都只需坚持.. 难? 维熟尔。 LZL的自学历程...只需坚持
  • 相关阅读:
    C语身教程第二章: 数据类型、运算符、表达式(2)
    C言语教程第二章: 数据典型、运算符、表达式(5)
    C措辞教程第二章: 数据范例、运算符、表达式(4)
    C语身教程第四章: 数组(3)
    yum 安装elasticsearch
    linux jenkins 配置
    linux centos 上安装cv2
    centos7下安装tesseractocr进行验证码识别,centos7 安装tesseract ,yum安装tesseract
    CentOS 7 安装OpenCV过程记录
    linux nginx配置exe文件下载
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5907215.html
Copyright © 2020-2023  润新知