• 浅谈 String 的 hashCode() 方法


    Java 中 hash 值的含义

    1. hash 值主要是用来在散列存储结构中确定对象的存储地址的,提高对象的查询效率,如HashMap、HashTable等;
    2. 如果两个对象相同,那么这两个对象的 hash 值一定相等;
    3. 如果要重写对象的 equals 方法,那么尽量重写对象的 hashCode 方法;
    4. 两个对象的 hash 值相等,并不一定表示两个对象相同。

    String 类的 hashCode() 方法的代码如下:

    public int hashCode() {
        int h = hash;
        if (h == 0 && value.length > 0) {
            char val[] = value;
    
            for (int i = 0; i < value.length; i++) {
                h = 31 * h + val[i];
            }
            hash = h;
        }
        return h;
    }

    关于乘子 31 大致总结一下:

    1. 31 是一个质数,与质数相乘得到的结果比其他方式更容易产生唯一性,产生 hash 值重复的概率比较小,冲突概率小
    2. Java 中如果相乘的数字太大会导致内存溢出问题,从而导致数据丢失。
  • 相关阅读:
    下载文件
    全局处理程序
    缩略图
    图片
    文件上传
    application用法
    多分辨率的支持
    适用于cocos2dx的编辑器:Texture,Tilemap,Particle,Action,Level etc
    cocos2dx下最大纹理大小取决于平台
    CCLabelTTF 如何支持换行符和换行
  • 原文地址:https://www.cnblogs.com/liuqing576598117/p/9856554.html
Copyright © 2020-2023  润新知