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;
        }
        
    }
  • 相关阅读:
    一行代码跨平台适配颠覆传统手机建站模式
    struts2接收参数的几种形式<转>
    MyEclipse生成多对多映射文件和POJO <转>
    Hibernate延迟加载机制
    Hibernate常见面试知识点<转>
    Hibernate一级缓存详解
    App Icon and Launch Images for iOS7.0 or Later
    iOS7 UITextView 光标问题
    iOS中让颜色赋值简单一点吧
    iOS状态栏变文字颜色改变
  • 原文地址:https://www.cnblogs.com/lxh520/p/9226963.html
Copyright © 2011-2022 走看看