`

String.hash

 
阅读更多
/**
     * Returns a hash code for this string. The hash code for a
     * {@code String} object is computed as
     * <blockquote><pre>
     * s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
     * </pre></blockquote>
     * using {@code int} arithmetic, where {@code s[i]} is the
     * <i>i</i>th character of the string, {@code n} is the length of
     * the string, and {@code ^} indicates exponentiation.
     * (The hash value of the empty string is zero.)
     *
     * @return  a hash code value for this object.
     */
    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;
    }

 String类内部维护一个char[] 别名叫value存储的是String的值,内部维护一个int 别名叫hash存储的是String对象的hash值。String重写hashcode()方法该方法返回的是s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]其中s指的是该对象内部维护的char[] value,n指的是value的长度

分享到:
评论

相关推荐

    Comparison_C_code_same_string.rar_Same Same

    总结来说,C#中比较字符串的方法多样,包括使用"=="运算符、`String.Equals()`、`String.CompareTo()`、`GetHashCode()`以及`StringComparer`。选择哪种方法取决于具体需求,如是否忽略大小写、是否考虑文化规则等。...

    java 中String.equals和==的比较

    Java 中 String.equals 和 == 的比较 Java 中 String.equals 和 == 的比较是 Java 编程语言中一个常见的概念,但是一些初学者容易混淆这两个概念。下面我们将详细介绍 Java 中 String.equals 和 == 的比较。 ...

    Redis笔记整理-五中数据类型之String和Hash

    Redis笔记整理-五中数据类型之String和Hash,这两种数据类型是我们常用语做缓存,从而减轻数据库的压力,缓存我们一般放到服务成,被多个表现成调用达到公用性

    matlab开发-String2Hash

    在提供的`string2hash.m`文件中,很可能包含了上述的函数实现。同时,`license.txt`文件可能是该函数的许可协议,详细规定了该代码的使用、修改和分发条款。遵循许可证条款,你可以自由地使用和学习这个函数的实现。...

    _string_hash.rar_The Just

    这里的压缩包文件 "_string_hash.rar_The Just" 提到了几个关键的文件:`GrLayerCache.c`、`_string_hash.c` 和 `GrLayerCache.h`,这似乎与一个特定的缓存系统和字符串哈希功能有关。下面我们将详细探讨这些知识点...

    String Hash algorithm, 字符串HASH算法

    list some String Hash algorithm, you can use it directly.

    key是string的hash_map

    本实例实现了一个hash_map,key是string类型,即可以存储索引是string的数据,希望对大家有帮助

    hashString

    标题中的"hashString"指的是一个C++实现的哈希类,专门处理字符串类型的输入。下面我们将深入探讨哈希函数的基础概念,以及如何在C++中实现哈希表和加密表。 1. 哈希函数基础: 哈希函数的主要目的是将输入(通常是...

    uthash hash string

    Any C structure can be stored in a hash table using uthash. Just add a UT_hash_handle to the structure and choose one or more fields in your structure to act as the key. Then use these macros to store...

    NoSQL数据库之Redis数据库管理三(string类型和hash类型)

    本篇文章将主要聚焦于Redis中的两种基础数据类型——String和Hash,以及它们在数据库管理中的应用。 首先,让我们深入了解String类型。在Redis中,String是最基本的数据类型,可以存储字符串、整数或浮点数。例如,...

    string Hash提供器 加密

    string加密,选择其中一种方式 MD5,SHA1,SHA256,SHA384,SHA512 进行对string 加密

    常用的hash算法(java实现)

    在计算机科学中,哈希(Hash)算法是一种用于将任意长度的数据映射为固定长度输出的函数。这种输出通常称为哈希值或消息摘要。在Java编程语言中,实现哈希算法可以方便地用于数据验证、查找表以及密码存储等多种用途...

    NSString-Hash:NSString Hash的扩展方法

    string.md5String string.sha1String string.sha256String string.sha512String HMAC哈希方法 [string hmacMD5StringWithKey:key] [string hmacSHA1StringWithKey:key] [string hmacSHA256StringWithKey:key] ...

    Java String 源码解析

    1.String 内部存储结构是? 答:String 内部存储结构是char数组,源码如下: public final class String implements java.io.Serializable, Comparable, CharSequence { /** 该值用于字符存储....this.hash = o

    DB - A String Adaptive Hash Table for Analytical Databases.pdf

    Hash tables are the ... In this paper, we address some common use cases of hash tables: aggregating and joining over arbitrary string data. We designed a new hash table, SAHA, which is tightly integrate

    提高 Java 代码性能的各种技巧.docx

    在 Java 6, 7, 8 中,JVM 字符串池的实现是使用一个拥有固定容量的 HashMap, 每个元素包含具有相同 hash 值的字符串列表。默认的池大小是 1009,可以通过参数 -XX:StringTableSize=N 来调整池的大小。 性能优化...

    c语言的md5_hash代替C#的ComputeHash

    MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();...string str = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(str))); C#的md5 ComputeHash方法,C语言实现

    Hash算法大全.txt

    ### Hash算法大全 #### 一、引言 Hash算法是一种将任意长度的数据转换为固定长度输出的方法,这种输出通常称为Hash值或Hash码。在计算机科学领域,Hash算法被广泛应用于数据查找、密码存储以及数据完整性校验等多...

    哈希计算工具 java-hash

    System.out.println("MD5 Hash: " + hexString.toString()); } } ``` 此外,还有第三方库如Apache Commons Codec和Google的Guava,它们提供了更丰富的哈希功能和便捷的API。 在软件开发中,哈希算法的应用广泛:...

    NoSQL数据库之Redis数据库管理一(string类型和hash类型)

    String类型的操作包括设置、获取、递增、递减、追加等,这使得它非常适合用于计数器、简单的缓存场景或者存储用户会话数据。 三、Redis中的Hash类型 Hash类型是一种将键值对存储在单个键下的数据结构,特别适合存储...

Global site tag (gtag.js) - Google Analytics