哈希码计算与二叉搜索树解析
1. 哈希码计算
哈希函数的作用是从对象计算出一个整数哈希码,使得不同对象大概率有不同的哈希码。我们先看看如何计算字符串的哈希码。
1.1 简单字符相加法
一种简单的方式是将字符串的字符值相加:
int h = 0;
for (int i = 0; i < s.length(); i++)
   h = h + s.charAt(i);
不过,这种方法并不好,因为它对字符值的混淆程度不够。比如,像 “eat” 和 “tea” 这样的字符串排列组合,它们的哈希码是相同的。
1.2 标准库方法
标准库采用如下方法计算字符串的哈希码:
final int HASH_MULTIPLIER = 31;
int h = 0;
for (int i = 0; i < s.length(); i++)
   h = HASH_MULTIPLIER * h + s.charAt(i);
 例如,”eat” 的哈希码是  31 * (31 * 'e' + 'a') + 't' = 100184  ,而 “tea” 的哈希码是  31 * (31 * 't' + 'e') + 'a' = 114704  。 
1.3 自定义类的哈希码计算
 对于自定义类,我们需要以类似的方式组合实例变量的哈希码。以  Co
 
                       
                             
                         
                             
                             
                           
                           
                             超级会员免费看
超级会员免费看
                                         
                   订阅专栏 解锁全文
                订阅专栏 解锁全文
                 
             
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   3798
					3798
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            