工具--js自定义HashMap

function HashMap(){

    this.$elements=new Array();

    // 获取MAP元素个数
    this.$size= function () {
        return this.$elements.length;
    };

    // 判断MAP是否为空
    this.$isEmpty= function () {
        return (0==this.$elements.length)
    };

    // 向MAP中增加元素(key, value)
    this.$put= function ($Key,$Value) {
        if(this.$isHaveKey($Key)){
            var index=this.$remove($Key).index;
        }
        if(0<=index){
            //实现当原key被删除之后,新key在原key的位置出现,而不是添加在HashMap的最后。
            var result={key:$Key,value:$Value};
            this.$elements.splice(index,0,result);
        }else {
            this.$elements.push({
                key:$Key,
                value:$Value
            });
        }
    };

    // 删除指定KEY的元素,成功返回True,失败返回False
    this.$remove= function ($Key) {
        var $bln=false;
        var $index;
        if(0<this.$elements.length){
            var i=this.$elements.length;
            for(;i;i--) {
                if (this.$elements[i - 1].key == $Key) {
                    this.$elements.splice(i - 1, 1);
                    $index = i - 1;
                    $bln = true;
                }
            }
        }
        var result={bln:$bln,index:$index};
        return result;
    };

    // 判断MAP中是否含有指定KEY的元素
    this.$isHaveKey= function ($Key) {
        var $bln=false;
        if(0<this.$elements.length){
            var i=this.$elements.length;
            for(;i;i--){
                if(this.$elements[i-1].key==$Key){
                    $bln=true;
                }
            }
        }
        return $bln;
    };

    // 判断MAP中是否含有指定VALUE的元素
    this.$isHaveValue= function ($Value) {
        var $bln=false;
        if(0<this.$elements.length){
            var i=this.$elements.length;
            for(;i;i--){
                if(this.$elements[i-1].value==$Value){
                    $bln=true;
                }
            }
        }
        return $bln;
    };
    
    // 获取指定KEY的元素值VALUE,失败返回NULL
    this.$get= function ($Key) {
        if(0<this.$elements.length){
            var i=this.$elements.length;
            for (;i;i--){
                if(this.$elements[i-1].key==$Key){
                    return this.$elements[i-1].value;
                }
            }
        }
        return null;
    };

    //清除map所有元素
    this.$clear= function () {
        this.$elements=new Array();
    };

    // 获取MAP中所有VALUE的数组(ARRAY)
    this.$values= function () {
        var result=[];
        if(0<this.$elements.length){
            var i=this.$elements.length;
            for(;i;i--){
                result.push(this.$elements[i-1].value);
            }
        }
        return result;
    };

    // 获取MAP中所有KEY的数组(ARRAY)
    this.$keys= function () {
        var result=[];
        if(0<this.$elements.length){
            var i=this.$elements.length;
            for(;i;i--){
                result.push(this.$elements[i-1].key);
            }
        }
        return result;
    };

    // 获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL
    this.$element= function ($index) {
        if($index>this.$elements.length||$index<0){
            return null;
        }
        return this.$elements[$index];
    }
}

你可能感兴趣的:(JavaScript,HashMap)