欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

拉链法解决Hash节点冲突相关问题_PHP教程

程序员文章站 2022-05-30 21:41:23
...
php
/*
 * hash::拉链法解决hash节点存储冲突问题
 * ::2014-07-02
 * ::Small_Kind
 */
class small_hash {
    
  private $size = 20;//hash节点大小
  private $zone = null;//hash空间
    
  //实例化函数,并设置一个初始hash节点大小,如果节点大小为null,则为默认节点大小
  final public function __construct($size = null){
    if(!is_null($size))$this->size = $size;//
    $this->zone = new SplFixedArray($this->size);//
  }
  
  //times33::计算key的hash值,并进行节点大小的取模工作
  //::实现流程1、计算key长度2、循环长度,并将每个字符转换成asicc码后*33
  final private function hash_times33($key){
      if(empty($key))return false;//key==>empty
      $strlen = strlen($key);
      $hash_val = 0;
      for($i=0;$i$strlen