zoukankan      html  css  js  c++  java
  • 同事写的javascript hashMap

    //实现hasnArrayMap

        var hashMap = function(){
            this.items = [];
            this.map = {};
        }
     
        hashMap.prototype.set =  function(key,value){
            var isFindInArray = false ;
            var obj ={key:key, value:value};
            for(var i = 0;i<this.items.length;i++){
                if(this.items[i].key == key) {
                    obj.index = i;
                    this.items[i] = obj;
                    isFindInArray = true;
                    break;
                }
            }
            if(!isFindInArray) {
                this.items.push(obj);
                obj.index = this.items.length - 1;
            }
            this.map[key] = value;
        }
     
        hashMap.prototype.get =  function(){
            var isKey = typeof(arguments[0]) === 'string';
            if(isKey) {
                return this.map[arguments[0]];
            } else {
                if(typeof(arguments[0])=='number') {
                    var index = parseInt(arguments[0]);
                    if(index >= 0 && index < this.items.length) {
                        return this.items[index].value;
                    } else {
                        return 'undefined';
                    }
                } else {
                    return 'undefined';
                }
            }
        }
     
        hashMap.prototype.remove = function(){
            var isKey = typeof(arguments[0]) === 'string';
            if(isKey) {
                return this._remove(this.map[arguments[0]]);
            } else {
                if(typeof(arguments[0])=='number') {
                    var index = parseInt(arguments[0]);
                    if(index >= 0 && index < this.items.length) {
                        return this._remove(this.items[index]);
                    } else {
                        return 'array over flow';
                    }
                } else {
                    return 'wrong arguments';
                }
            }
        }
     
        hashMap.prototype._remove = function(obj){
            if(obj) {
                var index = obj.index,
                    key = obj.key;
                this.items.splice(index ,1);
                if(this.map[key])
                    delete this.map[key];
            }
            return true;
        }
     
        hashMap.prototype.size = function(){
            return this.items.length;
        }
     
        /*
        var testArray = new SixDegree.hashMap();
        testArray.set('name1' , '1');
        testArray.set('name2' , '2');
        testArray.set('name3' , '3');
     
        console.log(testArray.get('name1'));
        console.log(testArray.get('name2'));
        console.log(testArray.get('name3'));
     
        console.log(testArray.get(0));
        console.log(testArray.get(1));
        console.log(testArray.get(2));
     
        testArray.remove(0);
     
        for(var i=0 , len = testArray.size();i<len ; i++){
            console.log(testArray.get(i));
        }
     
        testArray.remove('name2');
        for(var i=0 , len = testArray.size();i<len ; i++){
            console.log(testArray.get(i));
        }
        */

     

  • 相关阅读:
    [USACO13NOV] Pogo-Cow
    《高性能Mysql》讲聚簇索引
    复合索引底层实现
    数据库索引实现(B+,B-,hash)
    B+树,B树,聚集索引,非聚集索引
    MySQL存储引擎
    synchronized实现原理
    【1】线程池的使用
    CompletionService
    原型模式
  • 原文地址:https://www.cnblogs.com/yanypan/p/2801365.html
Copyright © 2011-2022 走看看