zoukankan      html  css  js  c++  java
  • js模拟散列

    	//散列
    	//类似于 对象存储,key-value
    	// 存入前,先将key进行hash编码,然后存入
    	function HashTable(){
    		var hashData = [];
    		this.djb2HashCode = function(key){
    			//散列函数算法
    			var hash = 5381;
    			for(var i = 0; i < key.length; i++){
    				hash = hash *33  + key.charCodeAt(i);
    			}
    			return hash % 1013;
    		};
    		this.put = function(key,ele){
    			hashData[this.djb2HashCode(key)] = ele;
    		};
    		this.remove = function(key){
    			hashData[this.djb2HashCode(key)] = undefined;
    		};
    		this.print = function(){
    			console.log(hashData.toString());
    		};
    	}
    	
    	var hash = new HashTable();
    	
    	hash.put("name","kite");
    	hash.put("age",20);
    	hash.print();
    	
    	//解决散列的 key重复冲突有三种办法
    	//分离链接、线性探查和双散列法
    	//分离链接:使用链表 ,在key编码之后的value上面,做一个链表
    	//线性探查: 判断当前key是否存在元素,是则找index+1去存放当前元素,需要存放key-value
    	
    

      

  • 相关阅读:
    redis分布式锁原理
    设置linux源
    linux 设置固定ip 并且解决ping www.baidu.com不通问题
    java内存模型
    Messenger和MVVM中的View Services
    MVVMLight
    MVVMLight
    MvvmLight
    MVVM 事件转命令1
    Mvvm简介
  • 原文地址:https://www.cnblogs.com/muamaker/p/9199472.html
Copyright © 2011-2022 走看看