举报投诉联系我们 手机版 热门标签 VUE中文网
您的位置:VUE中文网 > javahashcode哈希码值 Java HashCode(哈希码)

javahashcode哈希码值 Java HashCode(哈希码)

2023-03-05 21:17 Java教程

javahashcode哈希码值 Java HashCode(哈希码)

javahashcode哈希码值

Java中的哈希码(HashCode)是一种数字摘要算法,它可以将任意长度的输入数据映射为固定长度的输出数据。哈希码是一种不可逆的加密方式,它可以将原始数据转换成一个固定长度的唯一值,这个值就是哈希码。

Java中的哈希码有很多用途,最常用的就是用来校验文件完整性。当我们下载文件时,服务器会向我们发送一个文件的哈希码;当我们将文件保存到本地之后,再使用相同的加密方式生成该文件的哈希码;如果生成出来的和服务端发送过来的相同,则说明文件没有被修改过。

此外,Java中也可以使用哈希码来存储密码。当用户注册时,将用户输入的密码使用特定加密方式生成一个固定长度的字符串作为该用户密码在数据库中存储的内容。当用户再次尝试使用该密码时,将其使用相同加密方式生成一个固定长度字符串并进行匹配即可。

public static String getHashCode(String str) { 
    if (str == null || str.length() == 0) { 
        return ""; 
    } 

    try { 
        MessageDigest md = MessageDigest.getInstance("MD5"); 

        byte[] bytes = md.digest(str.getBytes("utf-8")); 

        StringBuilder sb = new StringBuilder(); 

        for (byte b : bytes) { 
            int bt = b & 0xff; 

            if (bt < 16) { 
                sb.append(0); 
            } 

            sb.append(Integer.toHexString(bt)); 
        }  

        return sb.toString();  

    } catch (Exception e) {  

        return null;  

    }  
}

Java HashCode(哈希码)

Java面向对象设计 - Java哈希码

Object的哈希码

哈希码是一个整数值。计算整数的算法称为散列函数。

Java使用散列码从基于散列的集合中有效地检索数据。

Object类有一个返回int的hashCode()方法,它是对象的哈希码。

该方法的默认实现通过将对象的内存地址转换为整数来计算对象的哈希码。

下面是我们在类中重写hashCode()方法时必须遵循的规则。

假设有两个对象引用,x和y。

如果x.equals(y)返回true,x.hashCode()必须返回一个整数,它等于y.hashCode()。

如果两个对象使用equals()方法相等,则它们必须具有相同的哈希码。

如果x.hashCode()等于y.hashCode(),则x.equals(y)不必返回true。

如果对同一个对象多次调用hashCode()方法,则该方法必须返回相同的整数值。

如果一个类覆盖这两个方法中的任何一个,它必须覆盖该类的对象在基于散列的集合中正确工作。

Java 7添加了一个实用程序类java.lang.Objects。它包含一个hash()方法,用于计算任意数量值的哈希码。

从java 7,使用Objects.hash()方法来计算对象的哈希码。

例子

以下代码显示如何计算哈希值。

class Book {
  private String title;
  private String author;


  public int hashCode() {
    int hash = 37;
    int code = 0;

    // Use title
    code = (title == null ? 0 : title.hashCode());
    hash = hash * 59 + code;

    // Use author
    code = (author == null ? 0 : author.hashCode());
    hash = hash * 59 + code;

    return hash;
  }
}


阅读全文
以上是VUE中文网为你收集整理的javahashcode哈希码值 Java HashCode(哈希码)全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 VUE中文网 vue88.com 版权所有 联系我们