zoukankan      html  css  js  c++  java
  • equals和hashCode

    package hash_map.hash;
    
    import java.util.HashMap;
    
    public class TestOne {
    
        public static void main(String[] args) {
            
            //1.哈希值
            //数据比较时,如果数据量比较大,equal就慢,引入哈希值
            //hashCode() 值: JVM根据对象的内存地址和其他信息生成一个整型数据
            
            // 2.hashCode 和equqal
            //两个对象先比较哈希值,如果相等,再通过equal比较结果是true才是真的相等
            //如果两个对象的hashCode相等,equal得到的结果不一定是true,哈希冲突
            
            //3.重写equal方法的时候一定要重写hashCode方法
            //如果不重写hashCode方法,hashCode不同,保存到hashmap中出返回null
            
            
            //4.如果字段值为易变数据最好不要依赖这个字段
            //
            //
            
            User t1 = new User("jack",1);
            User t2 = new User("jack",1);
            System.out.println(t1.hashCode());
            System.out.println(t2.hashCode()); 
            System.out.println(t1.equals(t2)); 
            
            HashMap<User, Integer> map = new HashMap<User, Integer>();
            map.put(t1, 1);
            System.out.println(map.get(t2));
            
            
            
        }
    
    }
    
    package hash_map.hash;
    
    public class User {
        
        private String name;
        private int age;
        
        private String guding = "66";
        
        public User(String name, int age) {
            super();
            this.name = name;
            this.age = age;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        
        @Override
        public boolean equals(Object obj) {
            return this.name.equals(((User)obj).name) && this.age == ((User)obj).age ;
        }
        
        @Override
        public int hashCode() {
            return this.guding.hashCode()*7;
        }
        
    }
  • 相关阅读:
    Oracle 11g+Windows10 x64安装、配置过程记录
    json工具类
    restTemplate工具类
    VirtualBox中安装CentOS 7后无法上网问题
    VirtualBox中安装CentOS 7
    idea安装完成后要做的几件事(设置字体、编码、行号)
    MiniUI学习笔记1-新手必读
    BUU-[GKCTF2020]WannaReverse
    BUU-Dragon Quest
    BUU-EzObfus-Chapter2
  • 原文地址:https://www.cnblogs.com/lxh520/p/9226963.html
Copyright © 2011-2022 走看看