zoukankan      html  css  js  c++  java
  • 关于JAVA中hashCode

    hash code 即散列码根据对象计算出的一个整型值,散列码是没有规律的。
    如果两个对象相等(equal() 返回true),则hashCode一定相等,如果两个对象hashCode相等,则对象不一定相等。
     
    String类的散列码计算如下:根据内容计算
    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. int hash = 0 ;  
    2. for ( int i = 0 ; i < length (); i ++) {  
    3.     hash = 31 * hash + charAt (i );  
    4. }  
    Object类则是根据对象的存储地址计算的。
    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. String s = "OK" ;                             
    2. StringBuilder sb = new StringBuilder (s);  
    3. String t = new String ("OK" );  
    4. StringBuilder tb = new StringBuilder (t);  
    上面四个对象的散列码如下:
    2524
    25860399 
    2524
    5184781
    字符串s和t的散列码相同,则是由内容计算出,而sb和tb的散列码则是根据存储地址而来。
     
    HashCode方法作用:
    在java的集合中Set是不允许元素有重复的,如果调用equal方法,新的元素每次都要和Set中所有元素比较一次,非常浪费时间。采用hash表原理可以提高效率。
    hash码是由对象存储地址算出来的,根据hash码就可以找到对象的物理存储位置,只要判断该位置是否有元素即可。有则代表Set中已经有相等元素,没有,则可以将新元素插入Set中。
  • 相关阅读:
    Rocket
    Rocket
    Rocket
    Rocket
    Rocket
    PHPstorm快捷键大全
    PHP命名规则
    第二章:第2章PHP基础语法
    第一章:初识PHP
    jQuery适用技巧笔记整合
  • 原文地址:https://www.cnblogs.com/winfred/p/4509675.html
Copyright © 2011-2022 走看看